在Linux下,我们可以通过crontab,定时把access.log移动到备份目录,同时,发信号USR1给nginx主进程,让其重新生成个日志文件。
在进行编写脚本之前,先进行以下假设:
日志文件是:/usr/local/nginx/logs/access.log
nginx主进程id保存在文件:/usr/local/nginx/logs/nginx.pid
切割后备份文件目录:/usr/local/nginx/logs/bak/
切割详细步骤,请参阅下面操作:
1、创建文件cut_access_log.sh:
vim /.bin/cut_access_log.sh vim /.bin/cut_access_log.sh
2、输入文件cut_access_log.sh内容
#! /bin/bash
org_path="/usr/local/nginx/logs/"
dest_path="/usr/local/nginx/logs/bak/"
if [ ! -d "$dest_path" ]; then
mkdir "$dest_path"
fi
mv ${org_path}access.log ${dest_path}access$(date +%Y%m%d).log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
3、保存cut_access_log.sh之后,赋可执行权限
chmod +x /.bin/cut_access_log.sh
4、编写crontab文件:
vim /.cron
5、输入crontab文件内容,并保持
59 23 * * * /bin/bash /.bin/cut_access_log.sh
6、添加到crontab中
crontab /.cron
通过以上六步,如果具有足够的权限话,访问日志会在每天23:59分,进行切割。