一、学习背景
- 大家都用过nginx,关于nginx日志
自动清理
、自动分割
及备份压缩
,方案有很多 - 但是不论哪一种,核心原理都是使用
kill -USR1
+nginx的PID进程文件
来实现 - 本文主要介绍自定义shell脚本+
crond
定时任务实现。
二、shell脚本
2.1、脚本实现思路
- 定义日志要保存的天数
SAVE_DAYS=7
- 重命名当天日志
mv ***.log ***_日期.log
- 重新打开nginx日志文件
kill -USR1 nginx的PID进程文件
- 压缩已备份日志(节省空间)
gzip ***_日期.log
- 清理保存天数之前的日志
find 路径 -type f -mtime +几天前 | xargs rm -f
2.2、完整脚本
clearNginxLog.sh
#!/bin/sh
#Command:/usr/nginx/nginx/tools/clearNginxLog.sh
#Execute time: 00:00:00
LOGS_PATH=/usr/nginx/logs/nginx
#nginx pid path
PID=/usr/nginx/nginx/nginx.pid
#nginx logs save days
SAVE_DAYS=7
#backup data format
TODAY=$(date -d 'today' +%Y-%m-%d)
CURRENTTIME=$(date -d 'today' +%Y-%m-%d-%H-%M-%S)
logfile=$LOGS_PATH/clearNginxLog_${
TODAY}.log
echo "`date +%Y-%m-%d` `date +%H-%M-%S` Start run the shell $0." >> ${
logfile}
echo