Linux 排程工作 — Crontab

Linux 要排程自動執行工作, 一般上會用 crontab 及 at, 它們的分別在於 at 只會執行一次就會結束, 而 crontab 則會一直將工作循環地執行, 直到將它終止。

要加入排程工作先輸入 crontab -e 指令:

# crontab -e

然後 crontab 會開啟文字編輯器 (一般是 vi 或 vim), 跟其他 shell script 一般, 以 “#” 字符開頭的行為註解, 不用理會。

Crontab 的格式分為 6 個欄位的資料, 它們分別代表:

1. 分鐘 (0-59)
2. 小時 (0-23)
3. 日期 (1-31)
4. 月份 (1-12)
5. 星期 (0-7)
6. 執行的指令

例如有一個用作備份的 shell script 在 /root/backup-day.sh, 想在每天早上 5:00 自動執行, 則加入這行:

0 5 * * * /root/backup-day.sh

然後就像日常操作 vi 一樣, 儲存檔案後離開便完成排程工作。


Crontab 格式裡面有幾個特別符號, 包括:

– : 表示一段連續的時間, 例如想在日期欄位輸入 11-15, 即代表每月的 11, 12, 13, 14, 15 這幾天執行.
, : 表示分隔一個以上的時間, 例如小時輸入 3,5, 代表 3:00 及 5:00.
* : 代表所有時間, 例如在 “日期” 欄位用 “*”, 代表每一天.
/ : 表示相隔多久執行一次, 例如我想每 5 分鐘執行一次, 可以輸入 “*/5 * * * * script.sh”.

如果不是新增排程, Crontab 指令其他的用法有:

crontab -e 編輯 crontab 檔案,如果檔案不存在則會自動建立。
crontab -l 顯示 crontab 檔案內容。
crontab -r 刪除 crontab 檔案。
crontab -v 顯示上一次編輯 crontab 的時間,但不是所有系統適用。


Leave a Reply