使用 Linux 設定 crontab 例行性工作排程

介紹如何在 Linux 系統上使用 crontab 工作排程,設定讓系統定時自動執行指定的指令或程式。

 

編輯自己的 crontab 內容:

crontab -e

 

查看自己的 crontab 內容:

crontab -l

 

個人 crontab 設定:

在個人的 crontab 設定中,基本上每一行設定就代表一個要定期執行的程式,其格式如下:

MIN HOUR DOM MON DOW CMD

 

一行設定包含六個部分,各部分的意義如下:

欄位 說明 可設定的值
MIN 分鐘 0 到 59
HOUR 小時 0 到 23
DOM 1 到 31
MON 月份 1 到 12,此欄位亦可用英文簡稱取代,例如一月也可以寫 Jan
DOW 星期幾 0(週日)到 6(週六),7 也代表週日。此欄位亦可用英文簡稱取代,例如週日也可以寫 Sun
CMD 要定期執行的指令 任何可執行的程式或指令稿(包含參數),例如 /path/to/cmd --your --parameter

 

除了一般的數字之外,crontab 亦可使用一些特殊字元,每個特殊字元都有不同的意義與適用情況:

特殊字元 代表意義
星號(* 代表接受任意時刻,例如若在月份那一欄填入星號,則代表任一月份皆可。
逗號(, 分隔多個不同時間點。例如若要指定 3:00、6:00 與 9:00 三個時間點執行指令,就可以在第二欄填入 3,6,9
減號(- 代表一段時間區間,例如若在第二欄填入 8-12 就代表從 8 點到 12 點的意思,也就是等同於 8,9,10,11,12
斜線加數字(/n n 代表數字,這樣寫的意思就是「每隔 n 的單位」的意思,例如若在第一欄填入 */5 就代表每間隔五分鐘執行一次的意思,也可以寫成 0-59/5

 

以下是一些最基本的 crontab 設定範例。

# 每天早上 8 點 30 分執行
30 08 * * * /home/gtwang/script.sh --your --parameter

# 每週日下午 6 點 30 分執行
30 18 * * 0 /home/gtwang/script.sh --your --parameter

# 每週日下午 6 點 30 分執行
30 18 * * Sun /home/gtwang/script.sh --your --parameter

# 每年 6 月 10 日早上 8 點 30 分執行
30 08 10 06 * /home/gtwang/script.sh --your --parameter

# 每月 1 日、15 日、29 日晚上 9 點 30 分各執行一次
30 21 1,15,29 * * /home/gtwang/script.sh --your --parameter

# 每隔 10 分鐘執行一次
*/10 * * * * /home/gtwang/script.sh --your --parameter

# 從早上 9 點到下午 6 點,凡遇到整點就執行
00 09-18 * * * /home/gtwang/script.sh --your --parameter

 

參考:https://blog.gtwang.org/linux/linux-crontab-cron-job-tutorial-and-examples/?fbclid=IwAR2ktAuxWGk_JZwwh-XhYf1bYXThPxw1KcIItu5_J-Ncex4XEC3-4S9TKpc