Nginx日志切割
一、使用Logrotate切割日志
创建Nginx配置
[root@localhost /]# vim /etc/logrotate.d/nginx
写入如下内容
/home/nginx/log/*/*.log { #以天为周期分割日志 daily ##以日期为单位 dateext #保留最近七天的日志 rotate 7 #忽略错误 missingok #如果文件为空则不分割 not if empty notifempty #开始执行附加的脚本命令 nginx写日志是按照文件索引进行的 必须重启服务才能写入新日志文件 sharedscripts postrotate #重启nginx服务 [ ! -f /usr/local/nginx/logs/nginx.pid ] || kill -USR1 `cat /usr/local/nginx/logs/nginx.pid` endscript }
检测全局配置
[root@localhost /]# /usr/sbin/logrotate -dv /etc/logrotate.conf
检测nginx配置
[root@localhost /]# /usr/sbin/logrotate -dv /etc/logrotate.d/nginx
强制执行
[root@localhost /]# /usr/sbin/logrotate -fv /etc/logrotate.d/nginx
二、使用Shell脚本切割日志
[root@localhost /]# vim /usr/local/script/nginx_cutlog.sh
写入如下内容:
#!/bin/bash ## 零点执行该脚本 ## Nginx 日志文件所在的目录 LOGS_PATH=/home/nginx/log ## 获取昨天的 yyyy-MM-dd YESTERDAY=$(date -d last-day +%Y-%m-%d) ## 移动文件 mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${YESTERDAY}.log ## 向 Nginx 主进程发送 USR1 信号。USR1 信号是重新打开日志文件 kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid) #删除7天前的日志 cd ${LOGS_PATH} find ./ -mtime +7 -name "*20[0-9][0-9]*" | xargs rm -f #或者 #find ./ -mtime +7 -name "*.log" | xargs rm -f exit 0
[THE END]