日積月累下,日誌文件會愈來愈大,日誌文件太大嚴重影響服務器效率,需要定時對日誌文件進行切割。
切割的方式有按月切割、按天切割、按小時切割,通常都是按天切割。
那麼如何進行切割呢?
思路:nginx
思路知道了,能不能具體點,show me code
下面以天天凌晨00:00切割nginx的訪問日誌access_log爲例,詳細講解切割步驟shell
#!/bin/bash // nginx的日誌文件路徑 logs_path="/data1/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")/access_$(date -d "yesterday" +"%Y%m%d").log // 發送kill -USR1信號給Nginx的主進程號,讓Nginx從新生成一個新的日誌文件 kill -USR1 `cat /var/nginx/nginx.pid`
// 進入編輯crontab crontab -e // 輸入配置 // div_nginx_log.sh腳本的路徑要寫絕對路徑 00 00 * * * /bin/bash /root/div_nginx_log.sh
按上面兩個步驟來,這樣就大功告成了bash
若更改crontab配置後不起效果,從新加載cron:/etc/init.d/cron reload
若還不行就重啓crontab服務:/etc/init.d/crond restart服務器