[ shell編程 ] crontab使用方法

來源:互聯網
上載者:User

標籤:使用者   相關   mon   ack   echo   執行   delete   工作   files   

  在學習crontab命令之前,你看下有沒有碰到過如下情境:

  (1)測試伺服器每天都會產生很多垃圾檔案,手工每天去清理非常繁瑣,如何讓系統自動按時清理呢?

  (2)如何定時收集伺服器的關鍵資訊呢?

  利用crontab命令,就可以完成指令碼的定時執行。下面我們來看下crontab命令的用法

1、crontab中相關的域

分< >時< >日< >月< >星期< >要啟動並執行命令

其中< >表示空格,總共分為6列。我們瞭解crontab中每一列所代表的含義:

第1列 分鐘(1~59)
第2列 小時(1~23,0表示子夜)
第3列 日(1~31)
第4列 月(1~12)
第5列 星期(0~6,0表示星期天)
第6列 要啟動並執行命令(請使用絕對路徑)

  在這些域中,可以用橫杠"-"來表示一個時間範圍,例如你希望星期一至星期五運行某個作業,那麼可以在星期域使用1-5來表示。還可以在這些域中使用逗號",",例如你希望星期一和星期四運行某個作業,只需要使用1,4來表示。可以用星號*來表示連續的時間段。如果你對某個表示時間的域沒有特別的限定,也應該在該域填入*。該檔案的每一個條目必須含有 5個時間域,而且每個域之間要用空格分隔。該檔案中所有的注釋行要在行首用#來表示。

2、crontab例子

(1)每天晚上的21:30運行/apps/bin/cleanup.sh指令碼

30 21* * * /apps/bin/cleanup.sh

(2)每月1、10、22日的4:45運行/apps/bin/backup.sh指令碼

45 4 1,10,22 * * /apps/bin/backup.sh

(3)每周六、周日的1:10運行find命令

10 1 * * 6,0 /bin/find -name "core" -exec rm {} \;

(4)每天18:00至23:00之間每隔30分鐘運行/apps/bin/dbcheck.sh指令碼

0,30 18-23 * * * /apps/bin/dbcheck.sh

3、crontab命令選項

  根據上述的內容,我們知道了cron單個任務的配置規則,那麼這一節主要瞭解怎麼使用crontab命令針對任務進行新增、修改、刪除的操作。

crontab命令的一般形式為:crontab [-u user] -e -l -r

其中:
-u 使用者名稱。
-e 編輯crontab檔案。
-l 列出crontab檔案中的內容。
-r 刪除crontab檔案。
如果使用自己的名字登入,就不用使用-u選項,因為在執行crontab命令時,該命令能夠知道當前的使用者。

3.1 建立一個新的crontab檔案

  建立一個名為<user>cron的檔案,其中<user>是使用者名稱,例如davecron。在該檔案中加入如下的內容

0,15,30,45 18-06 * * * /bin/echo `date` > /dev/console

儲存並退出。確保前面5個域用空格分隔。在上面的例子中,系統將每隔15分鐘向控制台輸出一次目前時間。如果系統崩潰或掛起,從最後所顯示的時間就可以一眼看出系統是什麼時間停止工作的。

為了提交你剛剛建立的crontab檔案,可以把這個新建立的檔案作為crontab命令的參數:

$ crontab davecron

現在該檔案已經提交給cron進程,它將每隔15分鐘運行一次。同時,新建立檔案的一個副本已經被放在 /var/spool/cron目錄中,檔案名稱就是使用者名稱(即dave)。

3.2 列出crontab檔案

 為了列出crontab檔案,可以用:

$crontab -l

0,15,30,45 18-06 * * * /bin/echo `date` > /dev/console

 為了防止誤刪crontab檔案,可以使用如下方法對crontab檔案做個備份:

$ crontab -l > $HOME/mycron

3.3 編輯crontab檔案

$ crontab -e

  這時我們可以像使用vi編輯其他任何檔案那樣修改crontab檔案並退出。如果修改了某些條目或添加了新的條目,那麼在儲存該檔案時,cron會對其進行必要的完整性檢查。如果其中的某個域出現了超出允許範圍的值,它會提示你。我們在編輯crontab檔案時,沒準會加入新的條目。例如,加入下面的一條:

#DT:delete core files,at3,30am on 1,7,14,21,26 days of each month

30 3 1,7,14,21,26 * * /bin/find -name "core" -exec rm {} \;

儲存並退出。最好在crontab檔案的每一個條目之上加入一條注釋,這樣就可以知道它的功能、已耗用時間,更為重要的是,知道這是哪位使用者的作業。
現在讓我們使用前面講過的crontab -l命令列出它的全部資訊:

$ crontab -l

0,15,30,45 18-06 * * * /bin/echo `date` > /dev/console

#DT:delete core files,at3,30am on 1,7,14,21,26 days of each month

30 3 1,7,14,21,26 * * /bin/find -name "core" -exec rm {} \;

3.4 刪除crontab檔案

$ crontab -r

 

[ shell編程 ] crontab使用方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.