软件设计 2017-04-18
一、kettle6.1.0 循环执行采集转换,增量采集数据
1.循环执行转换,并将日志输出到知道目录下
2.以当天日期创建日志目录,例如2017-04-17
3.删除前天的日志(2天前的日志),只保留昨天和今天的日志,防止磁盘空间被过分占用
--------------------------------------------------------------------------------
#!/bin/sh
#Count task numbersret=$(cat /data/kettle/ZD119/tablename_zd119 | wc -l)
#counteri=1
#get today date, example:2017-04-17date_day=$(date -d "now" +%Y-%m-%d )
#get current timestamp, example:15:48:14date_time=$(date -d "now" +%T)
#get 2 days ago date, date format:2017-04-15date_2day_ago=$(date -d "2 days ago" +%Y-%m-%d)
#log directorylog_zd119_path=/data/kettle/ZD119/log/
#judge wether 2 days ago log exists, if 2 days ago log exists, then remove logif [ -d "${log_zd119_path}${date_2day_ago}" ] ; then
rm -rf "${log_zd119_path}${date_2day_ago}"
fi
#judge whether the directory existsif [ ! -d "${log_zd119_path}${date_day}" ]; then mkdir -p ${log_zd119_path}${date_day}fi
#Cycle execute collection taskwhile [ $i -le $ret ]dotablename=$(sed -n "$i,0p" /data/kettle/ZD119/tablename_zd119)echo ${tablename}.ktr.${i}>>${log_zd119_path}${date_day}/zd119_tablename_${date_time}.logpan.sh -file=/data/kettle/ZD119/com/${tablename}.ktr -level=basic>>${log_zd119_path}${date_day}/zd119_${date_time}.log i=`expr $i + 1`done
#remove zd119 2 days ago logs#find ${log_zd119_path} -mtime +2 -type d -name * -exec rm -rf {} \;
-------------------------------------------------------------------------------------------
二、kettle6.1.0 循环执行采集作业,增量采集数据
1.循环执行作业,并将日志输出到知道目录下
2.以当天日期创建日志目录,例如2017-04-17
3.删除前天的日志(2天前的日志),只保留昨天和今天的日志,防止磁盘空间被过分占用
---------------------------------------------------------------------------------------
#!/bin/sh
#Count task numbersret=$(cat /data/kettle/ZDDW_HLW01/tablename_zddw_hlw01_com | wc -l)i=1
#get today date, example:2017-04-17date_day=$(date -d "now" +%Y-%m-%d )
#get current timestamp, example:15:48:14date_time=$(date -d "now" +%T)
#get 2 days ago date, date format:2017-04-15date_2day_ago=$(date -d "2 days ago" +%Y-%m-%d)
#zddw_hlw01 log directorylog_zddw_hlw01_path=/data/kettle/ZDDW_HLW01/log/
#judge wether 2 days ago log exists, if 2 days ago log exists, then remove logif [ -d "${log_zddw_hlw01_path}${date_2day_ago}" ] ; then
rm -rf "${log_zddw_hlw01_path}${date_2day_ago}"
fi
#judge whether the directory existsif [ ! -d "${log_zddw_hlw01_path}${date_day}" ]; then mkdir -p ${log_zddw_hlw01_path}${date_day}
fi
#Cycle execute collection task
while [ $i -le $ret ]dotablename=$(sed -n "$i,0p" /data/kettle/ZDDW_HLW01/tablename_zddw_hlw01_com)echo JOB_${tablename}.kjb.${i}>>${log_zddw_hlw01_path}${date_day}/zddw_hlw01_com_tablename_${date_time}.logkitchen.sh -file=/data/kettle/ZDDW_HLW01/com/JOB_${tablename}.kjb -level=basic>>${log_zddw_hlw01_path}${date_day}/zddw_hlw01_com_${date_time}.logi=`expr $i + 1`done
#remove zddw_hlw01 2 days ago logs#find ${log_zddw_hlw01_path} -mtime +2 -type d -name * -exec rm -rf {} \;
三、采用Linux crontab 定时器调度脚本,周期执行采集任务
3-1.调度要求
(1).循环周期10分钟
(2).开机运行crontab定时任务
3-2.crontab 使用
(1).编辑定时任务
#crontab -e
*/10 * * * * /bin/sh /data/kettle/ZD119/test_zd119.sh &*/10 * * * * /bin/sh /data/kettle/ZDDW_HLW01/test_zddw_hlw01_com.sh &*/10 * * * * /bin/sh /data/kettle/ZDDW_HLW01/test_zddw_hlw01_big.sh &
crontab 格式:* * * * * command
分别表示:分钟(0-59) 小时(0-23) 日(1-31) 月(1-12) 周(0-6) command(表示要执行的命令)
(2).常用命令
crontab [-u user] file crontab [-u user] [ -e | -l | -r ]其中:crontab [-u user] -e 编辑用户的当前crontab任务
crontab [-u user] -l 列出用户的当前crontab任务
crontab [-u user] -r 删除用户的当前crontab任务
crontab [-u user] -i 删除用户的当前crontab任务之前提示
crontab -c dir 指定crontab的目录(3).启动/停止crontab任务
/etc/init.d/cron start/restart/stop/status
service cron start/restart/stop/status
(4).开机自启动
chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息
usage: chkconfig [--list] [--type <type>] [name] chkconfig --add <name> ##添机管理服务 chkconfig --del <name> ##删除管理服务 chkconfig --override <name> chkconfig [--level <levels>] [--type <type>] <name> <on|off|reset|resetpriorities>
--------------------------------------------------------------------------------------------------------
chkconfig --list crond 查看当前任务的开机自启动级别
chkconfig crond on | off 开启开机自动
chkconfig --level 2345 crond on | off
(5).修改系统文件, 实现开机运行采集任务
vim /etc/rc.local
:/etc/init.d/crond restart