利用Cron讓Linux定期執行程序(工作排程)

在Microsoft Windows底下,我們可以透過工作排程來定期執行特定程序。而在Linux,則是透過crontab來進行。

一般來說有下指令編輯設定檔兩個方式可以設定。

下指令設定

語法:crontab [-u username] [-l|-e|-r]
說明:

  1. 這個指令預設只有root可以使用,加上-u 參數以指定特定帳號為該工作的執行者
  2. -e:編輯工作排程
  3. -l:檢視工作排程
  4. -r: 刪除所有工作排程

編輯設定檔

一般crontab的設定檔會位在 /etc/crontab,所以直接編輯這個檔案就行了,ubuntu系統要記得用sudo
指令:vim /etc/crontab

工作排程的設定格式如下:

格式:分(0-59) 時(0-23) 日(1-31) 月(1-12) 週(0-7) 要執行的指令串
說明:

  1. 各參數以空格分隔,沒有特定則用星號 " * "
  2. 週參數設定為0或7都代表星期日
  3. 任一時間參數若用逗號 "," 分隔,表示複數時間點,例如參數設定為 " * 0,12 * * * command " 表示每天中午12點及晚上12點都執行一次指令
  4. 任一時間參數若用逗號 "," 分隔,表示特定時間區間,例如參數設定為 " 30 0-3, * * * command " 表示每天0:30, 1:30, 2:30, 3:30 都執行一次指令
  5. 任一時間參數若用斜線 "/" 分隔,表示時間間隔,例如參數設定為 " * */2, * * * command " 表示每天每2個小時執行一次指令,也可以寫作是 " * 0-23/2, * * * command "