【菜鳥學Linux】Cron Job按期刪除Log(日誌)文件

  之前一直作Windows開發,近期的項目中要求使用Linux。做爲小菜鳥一枚,趕忙買了一本經典書《鳥哥的Linux私房菜》學習。最近恰好有一個小任務 - 因爲產品產生的Log不少,並且增加很快,因此須要用腳本(Bash scripts)刪除過時的Log文件linux

  使用Linux下的Cron Job能夠很好的解決這個問題。shell

  什麼是Cron Job?ubuntu

  創建Cron Job須要用到命令crontab,維基百科定義:crontab命令常見於Unix和類Unix的操做系統之中,用於設置週期性被執行的指令bash

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

 

一. 寫一個Bash shell script,做用:檢索日誌文件夾下的全部log文件,查詢每一個文件的日期,若是日期過時,則刪除這個log文件  spa

 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: " $currentDate
10 
11     for file in `find $1 -name "*.js_*.log"` #此處定義文件名格式,避免誤刪 12     do
13         local name=$file
14         local modifyDate=$(stat -c %Y $file)
15 
16         #對比時間,算出日誌存在時間,距離最近一次修改
17         local logExistTime=$(($currentDate - $modifyDate))
18         logExistTime=$(($logExistTime/86400))
19         
20         if [ $logExistTime -gt $expried_time ]; then
21             echo "File: " $name "Modify Date: " $modifyDate + "Exist Time: " $logExistTime + "Delete: yes"
22             rm -f $file
23         else
24             echo "File: " $name "Modify Date: " $modifyDate + "Exist Time: " $logExistTime + "Delete: no"
25         fi
26     done
27 }
28 
29 deleteLogs $log_path

 

二. 新建一個Cron Job,週期性的執行上面的腳本操作系統

  命令:.net

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

   注意:unix

  1. 這裏我用的是sudo crontab -e,不是crontab -e,這樣作是使用root的crontab,可使用sudo,獲取root某些權限。日誌

  2. Cron Job的格式以下:

1 * * * * * command to be executed
2 - - - - -
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

相關文章
相關標籤/搜索