Nginx日誌切割

   背景:nginx網站日誌是記錄日常網站訪問行爲的文件,當網站流量特別大或者運行很長時間時,這個日誌文件就會變得非常大,但我們又要保留日誌內容以方便查看故障原因。那麼我們就需要只保留我們需要的那部分即可,這就用到了日誌切割。我們可以根據日期,把日誌切割成小文件,既方便查看,又方便刪除那些沒用的信息。

   原理,利用mv命令把access.log日誌文件定時移動到某個日誌備份文件夾內,然後重新打開日誌文件,並重新記錄新的日誌內容。加上crontab任務計劃,便可以定時進行切割。

   腳本:

#!/bin/bash

logs_path="/data1/logs/"

logs_PATH="/usr/local/nginx/logs/"

mkdir -p  ${logs_path}$(date -d "yesterday" +%Y)/$(date -d "yesterday" +"%m")/

mv ${logs_PATH}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/$(date -d "yesterday" +"%Y%m%d").log

kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

   計劃任務:設定爲每日0點進行切割(也可以按照其它時間設定計劃)

crontab -e

0 0 * * * sh /script/logs_cut.sh



附:Nginx信號控制信息

QUIT       從容關閉            

TERM,INT     快速關閉             

HUP        從容關閉舊的進程並啓用新的進程

USR1       重新打開日誌文件

USR2       平滑升級可執行程序

WINCH      從容關閉工作進程

用法:kill -信號類型(HUP|TERM|QUIT) `cat /usr/local/nginx/nginx.pid`

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章