CentoS 7 中设置定时任务,执行定时切割nginx日志:
定时任务书写如下:
59 23 * * * root /bin/bash /home/felix/shell/cut_api.sh
脚本内容如下:
#定义日志的源路径,即nginx的默认log路径
source_log_path=/home/nginx
#定义保存后的路径位置
dest_log_path=/home/felix/logs
#定义log文件的名称,以每天为单位,定义日志的前缀为昨天的日期,因为定时任务拟在凌晨零点后执行。
yesterday=$(date -d "yesterday" +%Y%m%d)
#echo ${yesterday}
#rm -rf ${dest_log_path}/*
#指定移动
/usr/bin/mv ${source_log_path}/api.log ${dest_log_path}/nginx_api_${yesterday}.log
/usr/bin/mv ${source_log_path}/oldapi.log ${dest_log_path}/nginx_oldapi_${yesterday}.log
#移动后,重新向nginx的主进程发送信息,令nginx的主进程将日志重新打开。否则日志将会继续写到mv后的路径中
/usr/bin/kill -USR1 `ps axu | grep "nginx: master process" | grep -v grep | awk '{print $2}'`
/usr/bin/cd ${dest_log_path}
#进入日志的路径,查询前天前的日志,然后将其删掉。
/usr/bin/find . -mtime +7 -name "*20[1-9][3-9]*" |xargs rm -rf
exit 0
查看定时任务是否正常运行。
service crond status