shell脚本实现 nginx日志切割

柳三千

文章最后更新时间:2022年09月20日已超过730天没有更新。

生产环境需求:

1、每天切割nginx日志,并以时间为文件名保存

2、一个文件夹存一个月的日志


脚本实现内容:

1、创建access大文件,储存日志

mkdir access_log

图片.png


2、编写脚本

[root@WEB logs]# cat cut_nginx_log.sh 
#!/bin/bash
#文件夹名
dtime=$(date '+%Y%m')

#日志备份名
date=$(date '+%Y%m%d')

#备份路径
backpath=/usr/local/nginx/logs/access_log/$dtime/$date

#日志存储路径
logpath=/usr/local/nginx/logs/access.log

if [ ! -d "/usr/local/nginx/logs/access_log/$dtime" ];then
#判断文件夹是否存在,不存在就创建目录
    mkdir /usr/local/nginx/logs/access_log/$dtime
    mv $logpath $backpath
    kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
else
    mv $logpath $backpath
    kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
fi

注意事项

kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid) 这条语句是核心,可以参考nginx信号控制文章内容,大概作用就是进行日志文件重读,没有此命令,你所创造新日志文件不会有内容产生,nginx日志内容继续往你备份文件写入。


3、添加到定时任务cron

图片.png

文章版权声明:除非注明,否则均为柳三千运维录原创文章,转载或复制请以超链接形式并注明出处。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码