Nginx日志切割
Nginx日志每天需要通过切割来分析,笔者采用过两种方式,一种是shell脚本,一种是利用系统自带的logrotate。笔者倾向采用shell脚本,主要是因为在CentOS6中,logrotate是由crond计划任务执行的,而cron.daily是由anacron来处理,在日志轮转的时候时间具有延迟不确定性,而nginx日志一般都希望在0点切割,时间差尽量缩小,其实通过一些方法可以将CentOS6的cron.daily遵照准确时间来执行,这里笔者暂不介绍。
shell脚本切割nginx日志:
# cat /data/shell/cut_nginx_logs.sh
#!/bin/sh PIDFILE=/var/run/nginx.pid LOG_PATH="/data/wwwlogs" DATE=`date +%Y%m%d` LOGFILELIST="api.test.com_nginx.log www.test.com_nginx.log" cd $LOG_PATH for logfile in $LOGFILELIST do mv $LOG_PATH/$logfile $LOG_PATH/$logfile-$DATE kill -USR1 `cat $PIDFILE` &>> /tmp/cut_nginx.log tar zcf $logfile-${DATE}.tgz $logfile-${DATE} && rm -f $logfile-$DATE /bin/find $LOG_PATH -mtime +30 -type f -name $logfile-\* | xargs rm -f sleep 1 done