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

 

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