Nginx 定时切割日志
定时切割方式有按月切割、按天切割、按小时切割等。最常用的是按天切割。
Nginx 不支持像Apache一样使用cronolog来轮转日志,但是可以采用以下方式来实现日志文件的切割:
mv /data1/logs/acccess.log /data1/logs/20130423.log
kill -USR1 Nginx主进程号
首先通过mv命令将日志文件重命名为 /data1/logs/20130423.log,然后发送kill -USR1信号给Nginx的主进程号,让Nginx重新生成一个新的日志文件/data1/logs/access.log.如果nginx.conf配置文件中使用了"pid /usr/local/webserver/nginx/nginx.pid;"指令,指定了pid文件的存放路径,我们可以通过cat 这个pid文件获得Nginx的主进程号,命令如下:
kill -USR1 `cat /usr/local/webserver/nginx/nginx.pid`
如果想每天定时切割日志,还须接触crontab.我们可以写一个按天切割的日志,按年、按月分目录存放日志的shell脚本:
vi /usr/local/webserver/nginx/sbin/cut_nginx_log.sh
#!/bin/bash
#这个脚本须在每天的00:00运行
#Nginx日志文件的存放路径
logs_path="/data1/logs/"
mkdir -p ${log_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" + "%Y%m%d").log
kill -USR1 `cat /usr/local/webserver/nginx/nginx.pid`
保存,另外,配置crontab每天凌晨00:00定时执行这个脚本:
chmod 777 cut_nginx_log.sh
crontab -e
输入一下内容并保存:
00 00 * * * /bin/bash /usr/local/webserver/nginx/sbin/cut_nginx_log.sh
标签:shell,logs,NginxWeb,Nginx,nginx,切割,日志,log From: https://blog.51cto.com/u_2650279/6142647