一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

nginx中使用shell脚本每天定时切割日志

时间:2013-02-21 编辑:简简单单 来源:一聚教程网

Nginx不支持像Apache 一样使用cronolog来轮转日志,但是可以采用以下方式来实现日志文件的切割:
mv /data1/logs/access.log /data1/logs/20111030.log
kill -USR1 Nginx主进程号

通过mv命令将日志文件重命名为/data1/logs/20111030.log,然后发送kill -USR1信号给Nginx的主进程号,让Nginx

重新生成一个新的日志文件/data1/logs/access.log。

如果想每天定时切割日志,还须要借助crontab。我们可以写一个按天切割的日志,按年、月
份目录存放日志的shell脚本:

 

 代码如下 复制代码

#!/bin/bash
# This script run at 04:00

# The Nginx logs path
logs_path="/home/www/data/logs/"

mkdir -p ${logs_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/servers/nginx/nginx.pid`

赋予可执行权限:

执行命令crontab -e进入编辑状态

 代码如下 复制代码

00 04 * * * /root/cut_logs.sh

这样就每天凌晨4点你的系统就会自动切割nginx日志了哦。

如果你想更换其它时间的话我们可以修改00 04 * * * /root/cut_logs.sh 这一句,如改成每天的00:00切割nginx访

问日志

crontab -e

输入以下内容:

 代码如下 复制代码

00 00 * * * /bin/bash  /usr/local/nginx/sbin/cut_nginx_log.sh

即可了,只要修改前面的数字就行了。

热门栏目