Nginx的日志切割

随着Nginx运行时间增加,日志也会增加。为了方便掌握Nginx运行状态,需要时刻关注Nginx日志文件,太大的日志文件对监控是一个大灾难,所以需要定期进行日志文件的切割。
Nginx自身不具备日志分割处理的功能,但可以通过Nginx信号控制功能的脚本实现日志的自动切割,并通过Linux的计划任务周期性地进行日志切割。

1.在“/usr/local/nginx”目录下,添加一个日志分割脚本

[root@localhost nginx]# vim fenge.sh    //脚本
#!/bin/bash
#Filename:fenge.sh
d=$(date -d "-1 day" "+%Y%m%d")
logs_path="/var/log/nginx"
pid_path="/usr/local/nginx/logs/nginx.pid"
[ -d $logs_path ] || mkdir -p $logs_path
mv /usr/local/nginx/logs/access.log ${logs_path}/test.com-access.log-$d
kill -USR1 $(cat $pid_path)
find $logs_path -mtime +30 | xargs rm -rf
[root@localhost nginx]# chmod +x fenge.sh    //添加执行权限
[root@localhost nginx]# ls
client_body_temp  conf  fastcgi_temp  fenge.sh  html  logs  proxy_temp  sbin  scgi_temp  uwsgi_temp
[root@localhost nginx]# 

2.执行脚本

[root@localhost nginx]# ls /var/log/nginx   //执行前没有该目录
ls: 无法访问/var/log/nginx: 没有那个文件或目录
[root@localhost nginx]# ./fenge.sh    //执行脚本
[root@localhost nginx]# ls /var/log/nginx   //目录创建成功,并生成日志文件
test.com-access.log-20191112
[root@localhost nginx]#