一、由來:需要做一個定時任務定期從MySQL數據庫同步數據到Oracle,5m/次,同步日志寫在一個文件恐有不妥,故而需要分割,一般按天,這里為了調試,按分操作。
1.任務如下:分別指定任務的腳本,任務讀取文件路徑,任務日志輸出;
#vim kettle.sh 2 /usr/etc/tools/pendaho/data-integration/kitchen.sh -file=/usr/etc/tools/pendaho/kettle/works.kjb -level=Detailed -logfile=/usr/etc/tools/pendaho/kettle/logs/kettle.log
2.新建分割日志任務;
#vim kettle_log.sh
1 #!/bin/bash 2 #function:kitchen.sh日志分割,最多保留? 4 5 dir=/usr/etc/tools/pendaho/kettle/logs/; 6 file=kettle.log; 7 #DATE=`date +"%Y%m%d %H%M%S"`; 8 #date_file=$file-`date +"%Y%m%d-%H%M%S"`; #kettle.log-20190723 9 date_file=$file-`date -d "1 minutes ago" +%Y%m%d-%H:%M:%S`; #實際上是1分鍾前的所以增加1m ago;可以在命令行調試date -d; 10 #echo $date_file 11 #歸檔日志-將$file修改為$date_file,而后創建$file 12 cd $dir && mv -f $file $date_file && touch $file; 13 14 #刪除2天前的歸檔日志 15 #find $dir -mtime +3 -name "$file-*.log" -exec rm -rf {} \; 16 #find $dir -mtime +3 -name "kettle.log*" -exec rm -rf {} \; 17 find $dir -cmin +3 -name "kettle.log*" -exec rm -rf {} \;
*上述第9行的調試效果:
3.通過crontab配置任務執行;
1 crontab -e 2 */1 9-23 * * 1-5 sh /usr/etc/tools/pendaho/kettle/kettle.sh 3 */1 9-23 * * * sh /usr/etc/tools/pendaho/kettle/kettle_log.sh
4.效果;