Nginx日志切割策略脚本

[root@ser04 ~]# crontab -l
0 0 * * * /bin/bash /data/script/nginxlog.sh
[root@ser04 ~]# cat /data/script/nginxlog.sh
#/bin/bash

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

猜你喜欢

转载自blog.csdn.net/weixin_45561510/article/details/113975278