shell脚本切割nginx日志

 

使用shell脚本切割nginx日志很简单,shell脚本内容如下:

vim /usr/local/cut_del_logs.sh

#!/bin/bash
#初始化
LOGS_PATH=/var/log/nginx
YESTERDAY=$(date -d "yesterday" +%Y%m%d)
#按天切割日志
mv ${LOGS_PATH}/abao.com.log ${LOGS_PATH}/abao.com_${YESTERDAY}.log
#向nginx主进程发送USR1信号,重新打开日志文件,否则会继续往mv后的文件写数据的。原因在于:linux系统中,内核是根据文件描述符来找文件的。如果不这样操作导致日志切割失败。
kill -USR1 `ps axu | grep "nginx: master process" | grep -v grep | awk '{print $2}'`
#删除7天前的日志
cd ${LOGS_PATH}
find . -mtime +7 -name "*20[1-9][3-9]*" | xargs rm -f
#或者
#find . -mtime +7 -name "abao.com_*" | xargs rm -f
exit 0

该shell脚本有两个功能,第一个是切割nginx日志,第二个是删除7天之前的nginx日志。

在切割nginx日志的功能中,我们要注意该shell脚本命名切割的日志是以切割时,是以前一天的时间就行命名该日志文件的。

所以我们在把该shell脚本放在crontab中执行时,建议在每天的0点0分执行。如下:

vim /etc/crontab

0 0 * * * root /bin/sh /usr/local/cut_del_logs.sh

查看nginx切割的日志文件,如下:

ll --full-time /var/log/nginx/

本文 暂无 评论

回复给

Top