Nginx日志默认不做人为处理,日志文件会存放在access.log,error.log两个文件中,随着时间的推移,日志量会越来越大,不方便编辑查看,为了让日志按天存放,可以做一些配置,设置一个定时任务,每天凌晨00:00开始备份昨天的日志,然后重新开启一个新的日志文件。
本文实现的功能是在每天凌晨00:00把前一天的Nginx日志access.log重命名为access-xxxx-xx-xx.log格式,例如:access-2018-5-20.log,下面话不多说了,来看看详细的实现方法吧。
[root@localhost ~]# vim /data/scripts/auto_cutting_nginx_log.sh
脚本内容如下:
#!/bin/bash
#2018-5-20 21:24:20
#Automatic Cutting of Nginx logs
nginx=(
\[0\]=access.log
\[1\]=/usr/local/nginx
\[2\]=access_`date +%Y%m%d`.log
\[3\]=error.log
\[4\]=error_`date +%Y%m%d`.log
\[5\]=`ps -ef |grep nginx|awk '/master/ {print $2}'`
)
分割日志
====
mv ${nginx\[1\]}/logs/${nginx\[0\]} ${nginx\[1\]}/logs/${nginx\[2\]}
mv ${nginx\[1\]}/logs/${nginx\[3\]} ${nginx\[1\]}/logs/${nginx\[4\]}
#kill -USR1 PID向Nginx主进程发送USR1信号。USR1信号是重新打开日志文件
kill -USR1 ${nginx\[5\]}
if \[ $? -eq 0 \]
then
echo -e "\\033\[32m The ${nginx\[2\]} Cutting Successfully \\033\[0m"
echo -e "\\033\[32m The ${nginx\[4\]} Cutting Successfully \\033\[0m"
fi
定时任务
配置crontab每天凌晨00:00定时执行这个脚本
[root@localhost ~]# crontab -e
输入以下内容并保存
0 0 * * * /bin/sh /data/scripts/auto_cutting_nginx_log.sh
继续阅读 Shell最后更新:2024-1-24