nginx日志切割脚本

1.今天本来想看下nginx的错误日志,结果打开却刷出密密麻麻的日志,因为nginx本身不带有自动切割日志,累积太多的结果。这个时候就很烦了,没办法,我只能写参考一下别人的日志切割,写了自己所想要的日志切割脚本。


2.脚本如下:

#!/bin/bash

#

log_path="/usr/local/nginx/logs"   

pid_path="/usr/local/nginx/logs"   

date=$(date -d "yesterday" "+%Y%m%d")  

outdate=$(date -d "7 days ago" "+%Y_%m_%d") 


delete_path=$log_path/$outdate    


mv $log_path/access.log  $log_path/access.log_$date.log

rm -rf $(find $log_path  -name "*.log" -mtime +7 -type f)

kill -USR1 `cat $pid_path/nginx.pid`  nginx主进程发信号重新打开日志


nginx主进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者。

 

重新打开日志文件后,nginx主进程会关闭重名的日志文件并通知工作进程使用新打开的日志文件。

 

工作进程立刻打开新的日志文件并关闭重名名的日志文件。

 

然后你就可以处理旧的日志文件了。



3.crontab

  

   0 0 * * * /home/cutnginxlog.sh


这样就每天的0点0分把nginx日志重命名为日期格式,并重新生成今天的新日志文件。



你可能感兴趣的:(切割,yesterday)