shell实现nginx日志自动切割

    目前nginx已经成为软负载里最受欢迎的工具了,具有轻量级、低消耗、易扩展等优势。目前我们生产上也在使用nginx,但是nginx默认的日志没有按天切割,都是存放在一块的,不方便查阅,所以想写个shell脚本来是先nginx日志的按天分割。

1、环境说明

 linux系统  

nginx 版本: nginx/1.6.2【可以通过./nginx -V 查看哟】

nginx安装路径:/jboss/nginx

nginx当前日志路径:/jboss/nginx/logs/access.log


2、脚本思路【按天分割日志】

a、获取昨天的日期(date -d yesterday  +%Y%m%d),用来作为分割后日志的名称

b、将源日志文件移动到新的nohuplogs文件夹里,并按时间重命名

c、在源日志文件夹(logs)里新建默认日志文件(access.log)

d、给nginx一个信号量,重新打开日志

f、设置一个定时任务,定时执行日志切割的脚本

3、操作步骤

 a、新建日志分割的文件夹nohuplogs(mkdir /jboss/nginx/nohuplogs)

 b、编写脚本,暂且命名为:splitlogs.sh吧,脚本内容如下:

     

LOGPATH=/jboss/nginx/logs/access.log
BASEPATH=/jboss/nginx/nohuplogs
LOGBAK=$BASEPATH/$(date -d yesterday +%Y%m%d).log
#echo $LOGBAK
mv  $LOGPATH $LOGBAK
touch $LOGPATH
kill -USR1 `cat /jboss/nginx/logs/nginx.pid`

c、配置定时任务 crontab -e,如下图,增加日志分割的脚本,每天晚上23点59分切割

shell实现nginx日志自动切割_第1张图片

   

你可能感兴趣的:(linux,nginx)