由于nginx日志在运行之后会一直变大,然后会占用空间,甚至会影响系统,故准备将日志定期切割,然后删除定期的日志,查了网上的办法,将两篇比较好的文章综合一下,算是有效的解决了问题。
解决思路: 利用shell命令写一个定时脚本,每天定时执行。这里面牵涉两点,1是shell命令,2 是定时执行
1 shell命令如下
#!/bin/bash
#Rotate the Nginx logs to prevent a single logfile from consuming too much disk space.
LOGS_PATH=/usr/local/nginx/logs
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log
mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${YESTERDAY}.log
## 将nginxlogs下面的15天之前的日志文件删除
find /usr/local/nginx/logs/ -mtime +15 -type f -name *.log | xargs rm -f
## 向 Nginx 主进程发送 USR1 信号。USR1 信号是重新打开日志文件
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
将文件名定为nginxLogRotate.sh,保存到目录/usr/local/nginx/logs
chmod +x nginxLogRote.sh 这个不要忘了赋予执行权限
2 设置定时任务
vi /etc/crontab
0 0 * * * root /usr/local/nginx/nginxLogRotate.sh
注意:nginxLogRotate.sh 这个文件不要放到/usr/local/nginx/logs这个目录下
find 那一行的命令会不生效
参考
https://blog.csdn.net/wangkai_123456/article/details/71056758
https://blog.csdn.net/winsonyuan/article/details/40379087