此脚本实现nginx日志文件按天自动切割,并且删除一个月前的日志
[ 2013-04-26 15:22:20 | 作者: admin ]
p.s. 需要注意的是,一开始用root手动运行脚本可以运行,但是自动运行发现无法自动建立access.log,结果查看是目录权限问题。crontab配置中使用root运行脚本。
logs目录的权限必须和nginx配置的user nfsnobody nfsnobody权限一致,这样nginx 才能自动再建立access.log
自动运行的脚本 /home/tools/nginx_log_auto_split.sh
在logs目录下面建立old目录,将每天的日志移入压缩。
保存脚本到本地并把脚本加入crontab每天23:59运行
最后重新导入配置生效
service crond restart
logs目录的权限必须和nginx配置的user nfsnobody nfsnobody权限一致,这样nginx 才能自动再建立access.log
chown -R nfsnobody:nfsnobody logs
自动运行的脚本 /home/tools/nginx_log_auto_split.sh
在logs目录下面建立old目录,将每天的日志移入压缩。
#!/bin/bash
# This script run at 23:59
# The Nginx logs path
logs_path="/usr/local/nginx.0.8.15/logs"
mkdir -p ${logs_path}/old/
cd ${logs_path}
mv access.log ./old/access.$(date +%Y%m%d).log
kill -USR1 `cat /usr/local/nginx.0.8.15/nginx.pid`
find ${logs_path}/old/ -name "access.*" -type f -ctime +90 -exec rm {} \; > /dev/null 2>&1
# This script run at 23:59
# The Nginx logs path
logs_path="/usr/local/nginx.0.8.15/logs"
mkdir -p ${logs_path}/old/
cd ${logs_path}
mv access.log ./old/access.$(date +%Y%m%d).log
kill -USR1 `cat /usr/local/nginx.0.8.15/nginx.pid`
find ${logs_path}/old/ -name "access.*" -type f -ctime +90 -exec rm {} \; > /dev/null 2>&1
保存脚本到本地并把脚本加入crontab每天23:59运行
vi /etc/crontab
末尾加入以下:
59 23 * * * root /bin/bash /home/tools/nginx_log_auto_split.sh
末尾加入以下:
59 23 * * * root /bin/bash /home/tools/nginx_log_auto_split.sh
最后重新导入配置生效
service crond restart
[最后修改由 admin, 于 2013-04-29 11:12:13]
评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=2014
这篇日志没有评论。
此日志不可发表评论。