nginx日志切割,删除最近7天日志

方案名 简述
手写sh脚本方案 自己手写sh脚本,切割以及删除日志,crontab每晚定时执行
logrotate 方案 利用Linux自带的logrotate管理日志

1.手写sh脚本

  • 切割日志脚本
set -e   #脚本执行,遇到错就退出,不再往下执行
 
sleep 1 # 配合定时任务,0 点过一秒再开始切割任务
yesterday=$(date -d 'yesterday' +%Y-%m-%d)  #取得服务器当前时间
ng_logs_dir='/var/log/nginx'  #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  #把旧的日志打成压缩包
  rm -f  access_${yesterday}.log  #已有压缩包,删除压缩前的日志
else
  echo "日志目录不存在,请检查"
  exit 0
fi
  • 删除最近7天日志脚本
#!/bin/bash
DATE=`date -d "7 day ago" +%Y%m%d`
cd /usr/local/nginx/logs
rm -rf  "access.log-$DATE.gz"

配置crontab定时执行

参考:https://www.jiangexing.cn/355.html

2. logrotate 方案

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容