«

Nginx日志文件切割

指尖二进制 • 1 年前 • 684 次点击 • NGINX


在linux平台上使用shell脚本加crontab命令能非常方便的进行切割

日志文件切割要求:
需要把原有的access.log备份为access_XXXX-xx-xx.log。在创建一个新的access.log。在进行reopen重新打开配置文件。(XXX-XX-XX为日期,需要date获取)
1:首先在/usr/local/nginx/logs创建一个nginx.log的目录

mkdir -p /usr/local/nginx/logs/nginx.log

2:然后在/usr/local/nginx/logs下创建一个名为:nginxcutting.sh的bash文件如下:

#!/bin/bash    
LOGS_PATH=/usr/local/nginx/logs
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/nginx.log/access_${YESTERDAY}.log
mv ${LOGS_PATH}/error.log ${LOGS_PATH}/nginx.log/error_${YESTERDAY}.log

## 向 Nginx 主进程发送 USR1 信号。USR1 信号是重新打开日志文件 。以下两种当时都可以重新让配置文件生效。 
#kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
/usr/local/nginx/sbin/nginx -s reopen

3:设置linux定时任务:定时每天00:00以root身份执行脚本。(脚本文件包含了访问日志和错误日志切割)

vim /etc/crontab
0 0 * * * root /usr/local/nginx/logs/nginxcutting.sh

ps:为什么要重新打开配置文件?
因为在nginx配置文件定义了access.log和error.log日志文件的位置。就算重命名也不管用,必须要重启nginx,但是nginx重启user就会断开,对user体验度不好,所以进行重新打开配置文件,这样nginx会一样正常提供服务user就不会断开。

还没收到回复