【菜鳥學Linux】Cron Job定期刪除Log(日誌)檔案

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   strong   

  以前一直做Windows開發,近期的項目中要求使用Linux。作為小菜鳥一枚,趕緊買了一本經典書《鳥哥的Linux私房菜》學習。最近剛好有一個小任務 - 由於產品產生的Log很多,而且增長很快,所以需要用指令碼(Bash scripts)刪除到期的Log檔案

  使用Linux下的Cron Job可以很好的解決這個問題。

  什麼是Cron Job?

  建立Cron Job需要用到命令crontab,維基百科定義:crontab命令常見於Unix和類Unix的作業系統之中,用於設定周期性被執行的指令

  查閱了一些資料(發現技術查詢還是要用Google)參考後,期間也遇到很多問題,通過摸索和學習,實現步驟如下:

 

一. 寫一個Bash shell script,作用:檢索記錄檔夾下的所有log檔案,查詢每個檔案的日期,如果日期到期,則刪除這個log檔案  

 1 #!/bin/bash 2  3 log_path=""         #此處定義你的記錄檔夾路徑 4 expried_time=7      #此處定義你的日誌到期時間,如7天 5  6 function deleteLogs(){ 7     # 擷取系統時間,所有時間格式都是秒 8     local currentDate=`date +%s` 9     echo "current date: " $currentDate10 11     for file in `find $1 -name "*.js_*.log"` #此處定義檔案名稱格式,避免誤刪12     do13         local name=$file14         local modifyDate=$(stat -c %Y $file)15 16         #對比時間,算出日誌存在時間,距離最近一次修改17         local logExistTime=$(($currentDate - $modifyDate))18         logExistTime=$(($logExistTime/86400))19         20         if [ $logExistTime -gt $expried_time ]; then21             echo "File: " $name "Modify Date: " $modifyDate + "Exist Time: " $logExistTime + "Delete: yes"22             rm -f $file23         else24             echo "File: " $name "Modify Date: " $modifyDate + "Exist Time: " $logExistTime + "Delete: no"25         fi26     done27 }28 29 deleteLogs $log_path

 

二. 建立一個Cron Job,周期性的執行上面的指令碼

  命令:

1 sudo crontab –e2 5 0 * * * /home/user/deleteOldLog.sh >> /home/user/cron_job.log 2>&1

   注意:

  1. 這裡我用的是sudo crontab -e,不是crontab -e,這樣做是使用root的crontab,可以使用sudo,擷取root某些許可權。

  2. Cron Job的格式如下:

1 * * * * * command to be executed2 - - - - -3 | | | | |4 | | | | ----- Day of week (0 - 7) (Sunday=0 or 7)5 | | | ------- Month (1 - 12)6 | | --------- Day of month (1 - 31)7 | ----------- Hour (0 - 23)8 ------------- Minute (0 - 59)

    具體可參見http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/,Cron Job的用法講解很詳細。

  

  3. 如何通過日誌查看Cron Job的執行情況?

    ">> /home/user/cron_job.log 2>&1"的作用是可以方便的將Cron Job執行情況的日誌記錄到自己指定的Log檔案中,方便查看Job執行情況。另外還可通過下面這個命令,查看Job執行的一些其他資訊,感覺主要還是看自己指定的記錄檔,如果執行出錯,如Permisson Denied錯誤,在裡面記錄的很清楚。

1 tail -f /var/log/cron

  

三. 小結

  經過以上的步驟,就可以很輕鬆的在Linux中建立起一個Cron Job,用於周期性的做某些事情,如刪Log等。

 

四. 參考資料

  下面這些參考資料很不錯,如果要學習Cron Job,應該就足夠。

  1. HowTo: Add Jobs To cron Under Linux or UNIX?

    http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/

  2. How to run a cron job using the sudo command

    http://askubuntu.com/questions/173924/how-to-run-a-cron-job-using-the-sudo-command

  3. 如何查看crontab的日誌記錄

    http://blog.itpub.net/9252210/viewspace-684597

  4. Linux crontab日誌講解

    http://os.51cto.com/art/200910/159229.htm

 

  新手小白,通過日誌記錄自己的所學所得,拋磚引玉,歡迎批評指正:-)

 

  Best Regards

  Kevin Song

                                                  2014/6/30

  

  

 

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.