实现思路
shell脚本+定时任务+nginx信号控制,完成日志定时切割。
具体步骤
在需要保存日志或者是其他目录,新建一个shell脚本。
nano /data/www/nginx_logs_division.sh
编辑内容如下:
#!/bin/bash
#此脚本用于自动分割Nginx的日志,包括access.log和error.log 每天00:00执行此脚本
#将前一天的access.log重命名为access-xxxx-xx-xx.log格式,并重新打开日志文件 Nginx日志文件所在目录
LOG_PATH=/data/www/w.mdeve.com/logs/
#获取昨天的日期
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
#获取pid文件路径
PID=/dev/shm/nginx.pid
#分割日志
mv ${LOG_PATH}access.log ${LOG_PATH}access-${YESTERDAY}.log
mv ${LOG_PATH}error.log ${LOG_PATH}error-${YESTERDAY}.log
#修改新日志的所属用户和组
chown www:www *
#向Nginx主进程发送USR1信号,重新打开日志文件
kill -USR1 `cat ${PID}`
赋予脚本可执行权限:
chmod +x nginx_logs_division.sh
设置定时任务:
crontab -e
添加如下内容:
#每天凌晨1点切割日志
0 0 * * * /data/www/nginx_logs_division.sh
大功告成,日志按天自动切割的功能就完成了!
文章评论