我們每天淩晨00:00:01把昨天的日誌重新命名,放在特定的目錄下,再USR1資訊號控制nginx重建新的記錄檔
在目錄/usr/local/nginx/logs/下建立shell指令碼runlog.sh
註:以下代碼中的檔案位置均可自行更改
# 定義sh解譯器#!/bin/bush# 定義要分割的日誌的儲存位置LOGPATH=/usr/local/nginx/logs/access.log# 定義分割後的日誌的儲存位置,$(date -d yesterday +%Y%m):名為年份+月份的目錄BASEPATH=/usr/local/nginx/logs/$(date -d yesterday +%Y%m)# 遞迴建立以BASEPATH為名的目錄mkdir -p $BASHPATH# 將字串……賦值給bakbak=$BASEPATH/$(date -d yesterday +%d)_access_log# 將$LOGPATH更名為$bakmv $LOGPATH $bak# 建立$LOGPATH檔案touch $LOGPATH# 控制Nginx重建記錄檔kill -USR1 `/usr/local/nginx/logs/nginx.pid`
然後使用crontab命令編輯定時任務
crontab -e
在開啟的編輯視窗輸入
01 00 * * * sh /usr/local/nginx/logs/runlog.sh
crontab檔案的含義:
# 使用者所建立的crontab檔案中,每一行都代表一項任務,每行的每個欄位代表一項設定,它的格式共分為六個欄位,前五段是時間設定段,第六段是要執行的命令段,格式如下:# minute hour day month week command# 分 時 日 月 周 命令# 每項設定的解釋minute 表示分鐘,可以是從0到59之間的任何整數。hour 表示小時,可以是從0到23之間的任何整數。day 表示日期,可以是從1到31之間的任何整數。month 表示月份,可以是從1到12之間的任何整數。week 表示星期幾,可以是從0到7之間的任何整數,這裡的0或7代表星期日。command 要執行的命令,可以是系統命令,也可以是自己編寫的指令檔。
這時,即設定好了Nginx的定時日誌切割儲存,每天的淩晨00:00:01把昨天的日誌切割儲存起來。