nginx的日誌檔案沒有rotate功能。如果你不處理,日誌檔案將變得越來越大,還好我們可以寫乙個nginx日誌切割指令碼來自動切割日誌檔案。
第一步就是重新命名日誌檔案,不用擔心重新命名後nginx找不到日誌檔案而丟失日誌。在你未重新開啟原名字的日誌檔案前,nginx還是會向你重新命名的檔案寫日誌,linux是靠檔案描述符而不是檔名定位檔案。
第二步向nginx主程序傳送usr1訊號。
nginx主程序接到訊號後會從配置檔案中讀取日誌檔名稱,重新開啟日誌檔案(以配置檔案中的日誌名稱命名),並以工作程序的使用者作為日誌檔案的所有者。
重新開啟日誌檔案後,nginx主程序會關閉重名的日誌檔案並通知工作程序使用新開啟的日誌檔案。
工作程序立刻開啟新的日誌檔案並關閉重名名的日誌檔案。
然後你就可以處理舊的日誌檔案了。
nginx日誌按日期自動切割指令碼如下
#nginx日誌切割指令碼#設定日誌檔案存放目錄
logs_path="
/usr/local/nginx/logs/
"#設定pid檔案
pid_path="
/usr/local/nginx/nginx.pid
"#重新命名日誌檔案
mv $access.log $access_$(date -d "
yesterday
" +"
%y%m%d
").log
#向nginx主程序發訊號重新開啟日誌
kill -usr1 `cat $`
儲存以上指令碼nginx_log.sh
crontab 設定作業
0 0 * * * bash /usr/local/nginx/nginx_log.sh
這樣就每天的0點0分把nginx日誌重新命名為日期格式,並重新生成今天的新日誌檔案。
Nginx指令碼方式切割日誌
bin bash nginx的log日誌目錄 nginx的pid檔案存放目錄 pid path nginx.pid 清理掉指定日期前的日誌 days 60 生成昨天的日誌檔案 若指定10天前 date d 10 day ago 2017 06 08 y m d mv access.log acces...
python切割nginx日誌指令碼
usr bin env python coding utf 8 python nginx cut log 1 import subprocess def mkdir subprocess.call mkdir pv usr local nginx logs date d yesterday y da...
編寫定時切割Nginx日誌指令碼
1 建立指令碼 usr local nginx sbin cut nginx log.sh vi usr local nginx sbin cut nginx log.sh 輸入以下內容 引用 bin bash this script run at 00 00 the nginx logs path...