NginxWeb服务器定时切割日志shell脚本

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

你可能感兴趣的:(nginx,Web,shell,定时切割日志)