1. 程式人生 > >定期清空大日誌檔案

定期清空大日誌檔案

        過完十一假期來發現,節前部署的十臺伺服器磁碟都佔滿了,導致各節點的服務都停止了。吃一塹,長一智。於是今天寫個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日誌檔案就非常清楚。