shell實現nginx日誌自動切割

2021-08-20 04:20:26 字數 1088 閱讀 4856

目前nginx已經成為軟負載裡最受歡迎的工具了,具有輕量級、低消耗、易擴充套件等優勢。目前我們生產上也在使用nginx,但是nginx預設的日誌沒有按天切割,都是存放在一塊的,不方便查閱,所以想寫個shell指令碼來是先nginx日誌的按天分割。

1、環境說明

linux系統  

nginx 版本: nginx/1.6.2【可以通過./nginx -v 檢視喲】

nginx安裝路徑:/jboss/nginx

nginx當前日誌路徑:/jboss/nginx/logs/access.log

2、指令碼思路【按天分割日誌】

a、獲取昨天的日期(date -d yesterday  +%y%m%d),用來作為分割後日誌的名稱

b、將源日誌檔案移動到新的nohuplogs資料夾裡,並按時間重新命名

c、在源日誌資料夾(logs)裡新建預設日誌檔案(access.log)

d、給nginx乙個訊號量,重新開啟日誌

f、設定乙個定時任務,定時執行日誌切割的指令碼

3、操作步驟

a、新建日誌分割的資料夾nohuplogs(mkdir /jboss/nginx/nohuplogs)

b、編寫指令碼,暫且命名為:splitlogs.sh吧,指令碼內容如下:

logpath=/jboss/nginx/logs/access.log

basepath=/jboss/nginx/nohuplogs

logbak=$basepath/$(date -d yesterday +%y%m%d).log

#echo $logbak

mv $logpath $logbak

touch $logpath

kill -usr1 `cat /jboss/nginx/logs/nginx.pid`

c、配置定時任務 crontab -e,如下圖,增加日誌分割的指令碼,每天晚上23點59分切割

shell指令碼實現nginx開機自啟

vi etc init.d nginx 輸入下面的 wq 儲存並退出 設定檔案的訪問許可權 chmod a x etc init.d nginx a x all user can execute 所有使用者可執行 這樣在控制台就很容易的操作nginx了 檢視nginx當前狀態 啟動nginx 停止n...

shell指令碼nginx日誌解析入庫

bin sh 獲取nigin日誌 log path usr local nginx logs access.log cat log path while read line do 判斷該條資訊是否為我們需要 if line eleid then 替換中 和 的轉譯符 line line echo o...

nginx下日誌切割的shell

bin bash 建立時間資料夾 mkdir p data01 nginx log date y m d 先複製原來的正常訪問日誌 cp data01 nginx log access.log data01 nginx log date y m d access date y m d log 清空原...