#!/bin/bash
##零點執行該指令碼
##nginx日誌檔案所在的目錄
logs_path="日誌資料夾路徑"
##獲取昨天的yyyy-mm-dd
yesterday=$(date -d "yesterday" +%y-%m-%d)
##移動檔案
mv $/access.log $/access_$.log
##向nginx主程序傳送usr1訊號,usr1訊號是重新開啟日誌檔案
kill -usr1 `ps axu | grep "nginx: master process" | grep -v grep | awk ''`
##kill -usr1 $(cat /nginx安裝目錄/nginx.pid)#通知nginx重新生成新的日誌
##刪除7天前的日誌
cd $
find . -mtime +7 -name "access_*" | xargs rm -f
exit 0
crontab -e 在裡面輸入如下內容:(每晚0點1分執行日誌分割,注意中間的空格,如果該命令找不到crontab檔案選用下列方式修改即可)
1 0 * * * /bin/sh /指令碼路徑.sh
vim /etc/crontab在最後一行新增
1 0 * * * /bin/sh /指令碼路徑.sh
重新啟動crond使設定生效
/etc/rc.d/init.d/crond restart#yum install -y vixie-cron 安裝計畫任務,某些系統上可能沒有預裝需要執行此操作進行安裝
chkconfig crond on #設為開機啟動
service crond start #啟動
如果直接複製的話,要注意字型編碼的問題,很多windows上的指令碼上傳到linux就出錯,還是因為編碼問題
Nginx日誌按日期分割
原創 nginx是沒有以日期格式作為檔名來儲存的,也就是說,nginx不像tomcat,每天自動生成乙個日期檔案,所有的日誌都是以乙個名字來儲存,時間久了日誌檔案會變得很大。這樣非常不利於分析。雖然nginx沒有這個功能但我們可以寫乙個小指令碼配合計畫任務來達到這樣的效果。即讓nginx每天產生乙個...
nginx 按天分割日誌
nginx預設的日誌是統一寫到 安裝目錄的log下的 訪問日誌是 access.log,錯誤日誌是error.log 而且並沒有提供乙個可配置的地方,對於生產環境,日誌都集中在一塊兒,沒過幾天日誌檔案就可以大到幾個g,只能是使用作業系統的定時任務,自己寫指令碼定時執行,將log日誌進行切割。定義日誌...
linux下nginx日誌按天分割
nginx的日誌檔案沒有rotate功能。一段時間過後,日誌將越發臃腫,乙個accesslog很快就突破2.5g,因此有必要通過指令碼實現按天切割日誌。1 將日誌檔案備份到 usr local nginx logs historylog目錄下,備份的檔名稱是access yyyymmdd.log和e...