Nginx日志切割

日志切割简单原理如下,使用最low的方法手动日志切割

[root@www ~]# cd /usr/local/nginx/logs/

[root@www logs]# ll -h  --要切割的日志lulei.access.log文件大小60M

total 24K

-rw-r--r-- 1 root root 9.6K Mar 18 21:32 access.log

-rw-r--r-- 1 root root 7.9K Mar 19 21:09 error.log

-rw-r--r-- 1 root root  60M Mar 19 21:09 lulei.access.log

-rw-r--r-- 1 root root    6 Mar 19 21:07 nginx.pid

 

[root@www logs]# mv lulei.access.log lulei.access.log.bak   --备份要切割的日志文件

[root@www logs]# /usr/local/nginx/sbin/nginx -s reopen  --使用reopen重新打开日志文件

 

[root@www logs]# ll -h  --可以看到日志切割成功

total 24K

-rw-r--r-- 1 root  root 9.6K Mar 18 21:32 access.log

-rw-r--r-- 1 nginx root 7.9K Mar 19 21:11 error.log

-rw-r--r-- 1 nginx root    0 Mar 19 21:11 lulei.access.log

-rw-r--r-- 1 root  root   60M Mar 19 21:09 lulei.access.log.bak

-rw-r--r-- 1 root  root    6 Mar 19 21:07 nginx.pid

可看到nginx重新生成的新的lulei.access.log日志文件,而原来的日志文件变成了以.bak结尾的文件,这样就实现了日志切割

 

通过shell脚本和crontab来实现

Nginx WEB服务器每天会产生大量的访问日志,而且不会自动地进行切割,如果持续天数访问,将会导致该access.log日志文件容量非常大,不便于SA查看相关的网站异常日志。

可以基于Shell 脚本结合Crontab计划任务对Nginx日志进行自动、快速的切割,其切割的方法使用mv命令即可

#!/bin/bash
#auto mv nginx log shell
#by author jfedu.net
S_LOG=/usr/local/nginx/logs/access.log
D_LOG=/data/backup/`date +%Y%m%d`
echo -e "\033[32mPlease wait start cut shell scripts...\033[1m"
sleep 2
if [ ! -d $D_LOG ];then
        mkdir -p  $D_LOG
fi
mv $S_LOG  $D_LOG
kill  -USR1  `cat /usr/local/nginx/logs/nginx.pid`
echo "-------------------------------------------"
echo "The Nginx log Cutting Successfully!"
echo "You can access backup nginx log $D_LOG/access.log files."

Nginx日志切割执行结果

[root@www backup]# ./logcut.sh

Please wait start cut shell scripts...

-------------------------------------------

The Nginx log Cutting Successfully!

You can access backup nginx log /data/backup/20200319/access.log files.

 

 

将如上脚本内容写入auto_nginx_log.sh文件,crontab /var/spool/cron/root文件中添加如下代码,每天凌晨自动切割日志:

0  0  *  *  *  /bin/sh  /data/sh/auto_nginx_log.sh >>/tmp/nginx_cut.log 2>&1

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章