Nginx日志文件切割


Nginx 是一個非常輕量的 Web 服務器,體積小、性能高、速度快等諸多優點。但不足的是也存在缺點,比如其產生的訪問日志文件一直就是一個,不會自動地進行切割,如果訪問量很大的話,將 導致日志文件容量非常大,不便於管理。當然了,我們也不希望看到這么龐大的一個訪問日志文件,那需要手動對這個文件進行切割。

在 Linux 平台上 Shell 腳本豐富,使用 Shell 腳本加 crontab 命令能非常方便地進行切割

日志文件切割要求

由於 Nginx 的日志都是寫在一個文件當中的,因此,我們需要每天零點將前一天的日志存為另外一個文件,這里我們就將 Nginx 位於 logs 目錄中的 access.log 存為 access_[yyyy-MM-dd].log 的文件。其實 logs 目錄中還有個 error.log 的錯誤日志文件,這個文件也需要每天切割一個,在這里就說 access.log 了,error.log 的切割方法類似。

 

在 Linux 平台上進行切割,需要使用 date 命令以獲得昨天的日期、使用 kill 命令向 Nginx 進程發送重新打開日志文件的信號,以及 crontab 設置執行任務周期。

先創建一個 Shell 腳本,如下:

#!/bin/bash
LOGS_PATH=/usr/local/nginx/logs
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
mv ${LOGS_PATH}/sdk_acc.log ${LOGS_PATH}/sdk_acc_${YESTERDAY}.log
mv ${LOGS_PATH}/sell_acc.log ${LOGS_PATH}/sell_acc_${YESTERDAY}.log
kill -USR1 $(cat /usr/local/nginx/nginx.pid)       ## 向 Nginx 主進程發送 USR1 信號。USR1 信號是重新打開日志文件

 

2 * * * *  sh /opt/sync/sync2oss.sh >/dev/null 2>&1  #每小時2分鍾執行

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM