背景:nginx網站日誌是記錄平常網站訪問行爲的文件,當網站流量特別大或者運行很長時間時,這個日誌文件就會變得很是大,但咱們又要保留日誌內容以方便查看故障緣由。那麼咱們就須要只保留咱們須要的那部分便可,這就用到了日誌切割。咱們能夠根據日期,把日誌切割成小文件,既方便查看,又方便刪除那些沒用的信息。nginx
原理,利用mv命令把access.log日誌文件定時移動到某個日誌備份文件夾內,而後從新打開日誌文件,並從新記錄新的日誌內容。加上crontab任務計劃,即可以定時進行切割。bash
腳本:ide
#!/bin/bash網站
logs_path="/data1/logs/"日誌
logs_PATH="/usr/local/nginx/logs/"進程
mkdir -p ${logs_path}$(date -d "yesterday" +%Y)/$(date -d "yesterday" +"%m")/crontab
mv ${logs_PATH}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/$(date -d "yesterday" +"%Y%m%d").logip
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`it
計劃任務:設定爲每日0點進行切割(也能夠按照其它時間設定計劃)
class
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`