003 crontab 週期性排程

Post date: 2014/9/24 上午 11:15:17

(史帝芬, hi.steven@gmail.com, 2009/01/24)

在 Linux 下,每個使用者可以定義自己的 cron table 來設定週期性排程,管理 cron table 的方法是透過 crontab 指令。crontab 的使用相當簡單,整理如下:

  • cron table 格式

min hour day month dow commands

  • : 每分鐘,每隔1分鐘做什麼事。(1可更換成2、5、10、…)
  • */1 * * * *
  • min: 每小時的第幾分鐘,範圍為 0-59
  • hour: 每天的第幾個小時,範圍為 0-23
  • day: 每個月的第幾天,範圍為 1-31。
  • month: 每年的第幾個月,範圍為 1-12。
  • dow: 每星期的星期幾,範圍為 0-7,0 與 7 都是星期日,1 為星期一,2 為星期二,餘類推。

範例

1

2

3

指令

說明

00 09 * * 1-5 $HOME/bin/up_hncb.sh

每個星期一至星期五,9:00執行 $HOME/bin/up_hncb.sh 。

10 12 29 9 * $HOME/bin/prices_noon.sh

每年 9 月 29 日 12:10 執行 $HOME/bin/prices_noon.sh 。

15 5-7 * * * echo "Hello"

每天 5:15、6:15、7:15 執行 echo "Hello" 。

  • 指令

項目

1

2

3

指令

說明

crontab -e

編輯 cron table,下了這個指令,crontab 會使用 vi 開啟 cron table,在這個檔案裡編輯後存檔,系統即會在設定的時間執行指定的指令,並將結果 mail 給 job owner。如圖一,我們編輯了一個簡單的 echo 命令,設定在每小時的 50 分時執行,存檔後,待時間過後,我們如圖二檢視 mail 可以發現系統確實執行了該指令。

圖一

圖二

crontab -l

檢視 cron table 內容。

crontab -r

刪除 cron table。

上述介紹是針對使用者維護自己的 cron table,如果系統管理者要管理某特定使用者的 cron table,只需在指令後加上 -u User 即可。

        • 系統管理者
              • crontab -e [-u User]
              • crontab -l [-u User]
              • crontab -r [-u User]
  • cron 的系統設定檔

上述的介紹是針對使用者個人的 cron table,Linux系統中於 /etc/crontab 中,存有整個系統的週期性排程,特別注意,這個檔案裡的排程格式略有不同,在 command 前多了使用者帳號,這是因為我們必須告訴系統用那個身分執行指令,否則系統不曉得該用那個身分執行比較洽當。