Shell---Nginx日志保留策略
[root@ser04 ~]# crontab -l 0 0 * * * /bin/bash /data/script/nginxlog.sh [root@ser04 ~]# cat /data/script/nginxlog.sh #/bin/bash # author sunli set -e #脚本执行,遇到错就退出,不再往下执行 sleep 1 # 配合定时任务,0点过一秒再开始切割任务 yesterday=$(date -d 'yesterday' +%Y-%m-%d) #取得服务器当前时间 ng_logs_dir='/usr/local/nginx/logs' #nginx 日志文件目录 if [ -d $ng_logs_dir ];then #判断日志目录是否存在 cd $ng_logs_dir mv access.log access_${yesterday}.log #通过 mv 命令将日志移动到分割后的日志,error 日志我一般不做切割 kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid) #发送 kill -USR1 信号给 Nginx 的主进程号,让 Nginx 重新生成一个新的日志文件 sleep 1 tar -czf access_${yesterday}.log.tar.gz access_${yesterday}.log #把旧的日志打成压缩包 mv access_${yesterday}.log.tar.gz /data/nginx/log/ #移到指定目录 rm -f access_${yesterday}.log #已有压缩包,删除压缩前的日志 else echo "日志目录不存在,请检查" exit 0 fi