nginx日誌切割

當我們 網站正常工作的時候,每次訪問,我們的access.log日誌文件都會去記錄,時間一長,這個日誌文件肯定會
變得很大,撐爆我們的磁盤空間,這個時候呢我們要把這個日誌文件進行切割,按日去記錄,然後規定刪除多少天之前的日誌文件。

nginx沒有像Apache那樣的切割工具。需要我們去寫一個腳本來實現

[root@localhost vhosts]# vim /usr/local/sbin/nginx_logrotate.sh
#!/bin/bash
d=date -d "-1 day" +%F
[ -d /tmp/nginx_log ] || mkdir /tmp/nginx_log
mv /tmp/access.log /tmp/nginx_log/$d.log
/etc/init.d/nginx reload > /dev/null
cd /tmp/nginx_log/
gzip -f $d.log

在/usr/local/sbin/這個目錄下面寫一個nginx_logrotate.sh腳本文件,輸入上面的內容

[root@localhost vhosts]# sh -x /usr/local/sbin/nginx_logrotate.sh
++ date -d '-1 day' +%F

  • d=2016-06-24
  • '[' -d /tmp/nginx_log ']'
  • mkdir /tmp/nginx_log
  • mv /tmp/access.log /tmp/nginx_log/2016-06-24.log
  • /etc/init.d/nginx reload
    重新載入 Nginx: [確定]
  • cd /tmp/nginx_log/
  • gzip -f 2016-06-24.log

執行這個腳本,加-x可以看到執行的過程

[root@localhost vhosts]# ls /tmp/access.log
/tmp/access.log

可以看到access.log文件還在

[root@localhost vhosts]# cd /tmp/nginx_log/
[root@localhost nginx_log]# ls
2016-06-24.log.gz

在這個目錄下面呢,已經生產了一個壓縮文件,則表示切割完成

要每天執行這個日誌文件切割呢,需要要我們要執行的sh -x /usr/local/sbin/nginx_logrotate.sh這個腳本命令
加入到計劃任務當中,計劃一個時間讓它每天去執行。

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