# nginx日志切割和日志定期清理
nginx日志切割和日志定期清理(仅供个人学习使用)
nginx代理服务器日志未作处理,access.log,error.log占用738M,目前已经不方便编辑查看,按此方法日志按天存放,每天凌晨00:00开始备份昨天的日志,然后重新开启一个新的日志文件。具体实现如下:
vi /usr/loca/nginx/nginx_logbak.sh
#!/bin/bash
LOG_PATH=/usr/local/nginx/logs/
YESTERDAY=$(date -d "yesterday" +%Y-o%m-%d )
PID=${LOG_PATH}nginx.pid
mv ${LOG_PATH}access.log ${LOG_PATH}access-${YESTERDAY}.log
mv ${LOG_PATH}error.log ${LOG_PATH}error-${YESTERDAY}.log
kill -USR1 `cat ${PID}`
给nginx_logbak.sh赋执行权限
chmod +x nginx_logbak.sh
定时任务启动脚本,放入crontab中
追加定时任务 (保留7天日志)
crontab -e
#!/bin/bash
0 0 * * * /bin/bash /usr/loca/nginx/nginx_logbak.sh
#按需清理
0 0 * * * /usr/bin/find /usr/local/nginx/logs/ -mtime +7 -name "*.log.*" -exec rm -rf {} \;
#!/bin/bash
#初始化
LOGS_PATH=/data/nginx/logs/www.domain.com
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
#按天切割日志
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log
#向 Nginx 主进程发送 USR1 信号,重新打开日志文件,否则会继续往mv后的文件写内容,导致切割失败.
kill -USR1 `ps axu | grep "nginx: master process" | grep -v grep | awk '{print $2}'`
#删除7天前的日志
cd ${LOGS_PATH}
find . -mtime +7 -name "*20[1-9][3-9]*" | xargs rm -f
exit 0
浙公网安备 33010602011771号