如何定時切割nginx日誌?

9heyunanquan發表於2021-08-02

nginx日誌檔案預設有兩個,一個是access.log,一個是error.log,隨著專案的執行, 兩個日誌檔案會變得越來越大,後期排查錯誤就不好定位,為了解決這個問題,每天凌晨定時將日誌切割。

step1:在/usr/local/nginx/sbin 目錄下編寫定時切割指令碼

vim cut_my_log.sh

#!/bin/bash
LOG_PATH="/var/log/nginx/"
RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M)
PID=/var/run/nginx/nginx.pid
mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log
mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log

#向Nginx主程式傳送訊號,用於重新開啟日誌檔案
kill -USR1 `cat $PID`

賦予執行許可權

chmod 755 cut_my_log.sh

step2:安裝定時任務

yum install crontabs

step3:新增一項定時任務執行 crontab -e

59 23 * * * /usr/local/nginx/sbin/cut_my_log.sh

step4:重啟定時任務

service crond restart
附:常用定時任務命令:

service crond start //啟動服務

service crond stop //關閉服務

service crond restart //重啟服務

service crond reload //重新載入配置

crontab -e // 編輯任務

crontab -l // 檢視任務列表

定時任務表示式:

Cron表示式是,分為5或6個域,每個域代表一個含義,如下所示:

如何定時切割nginx日誌?

常用表示式:

  • 每分鐘執行:

    */1 * * * *

  • 每日凌晨(每天晚上23:59)執行:

    59 23 * * *

  • 每日凌晨1點執行:

    0 1 * * *

    原文連結:www.9he.com

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章