定期清空大日誌檔案
阿新 • • 發佈:2018-11-17
過完十一假期來發現,節前部署的十臺伺服器磁碟都佔滿了,導致各節點的服務都停止了。吃一塹,長一智。於是今天寫個shell指令碼定期清空日誌檔案,這裡不要用刪除,以免影響到正在啟動的服務。
1、確定大日誌檔案的路徑
用find 指令找一下就可以定位到需要清理的日誌,如下查詢的 / 目錄下大於50M的檔案
find . -type f -size +50M
2、清空大日誌檔案指令碼
tree 看一下大日誌路徑結構:
需要從logs/eie_info/AnhuiDetailSpider/,故這裡用了三個迴圈巢狀shell指令碼實現,程式碼如下:
#!/bin/bash ##pwd /var/scrapyd cd logs/ #cd Einfo for i in `ls ./` do echo "$i" cd $i #cd Einfo/beijingspider for j in `ls ./` do cd $j echo "$j" for z in `ls ./` do > $z done cd .. done cd .. done exit 0
用chmod 777給指令碼新增許可權後,執行該指令碼,大日誌檔案瞬間變成了0kb。
3、定期執行
Linux中通常採用的crontab來定期執行任務,沒有安裝的話,用yum install crontab安裝下。crontab -e新增一下定時任務,這裡我選擇的是每天早上6點鐘開始執行任務,>/dev/null 2>&1表示的是遮蔽掉終端輸出。
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin */5 * * * * /usr/sbin/ntpdate 10.101.3.100 * * * * * /usr/local/gse/agent/bin/gsectl watch * 6 * * */var/scrapyd/removeLogs.sh>/dev/null 2>&1
先關閉,再啟動下crontab服務,這樣start-detail.sh就可以定期執行了。
/sbin/service crond start //啟動服務
/sbin/service crond stop //關閉服務
看定時任務是否執行,可以用tail -f /var/log/cron.log日誌檔案就非常清楚。