FlossDoc: 請協力 GPLv3 的中文翻譯工作。
編排定期執行工作
FlossDoc,自由中文開源知識庫
| 標準文章 | |
|---|---|
| 作者: | Jadedragon |
| 協力: | Roy Chan |
| 校對: | - |
| 級別: | 初階 |
| 分享本文: | |
在大部份 Unix/Linux 上都可以使用命令 crontab 要求系統在指定時間執行指定的命令或腳本程式 (script),例如每天早上七時正電郵當天的天氣,每逢星期日凌晨三時半進行備份和每月一日產生報告並電郵系統管理員等。
crontab 中指定的工作 (所謂 cron job) 是由 cron 系統管理和執行的。cron 來自希臘文 chronos, 代表「時間」,而則 crontab 代表 cron table。
目录 |
設定或管理使用者的定期工作
Unix/Linux 上每一個使用者都可以有自己的工作排程表 crontab (crontab 代表 cron table) 。使用者只要編輯自己的 crontab 並加入工作資訊,就可以令系統定時自動執行工作。要編輯自己的 crontab,可以使用以下命令:
crontab -e
執行命令後將會打開一個文字編輯器 (一般為 vi),使用者可在文字編輯器編寫他的 cronjob,例如:
*/10 9-15 * * * some_program.sh 0 0 * * 2,4,6 another_program.sh
每一行分成六個欄,分別是:
- 分鐘 (0-59)
- 小時 (0-23)
- 日子 (1-31)
- 月份 (1-12)
- 星期 (0-6) 0 代表星期天,1 代表星期一
- 最後的部份是要執行的命令
儲存後便將會生效。以上的例子意思為:
- 第一句: 09:00 至 15:00 每十分鐘, 執行 some_program.sh
- 第二句: 逢星期二四六, 零時零分, 執行 another_program.sh
如果命令中有輸出訊息至 stdout 的話,輸出訊息將會被寄到使用者的電郵信箱中。
設定或管理系統定期工作
系統管理員除了可以和一般使用者在自己的 crontab 排定工作外,亦可以直接在系統工作排程表 /etc/crontab 設定定期工作。/etc/crontab 主要用作排程一些系統工件,包括每晚、每週和每月的系統維護工作。其內容大致如下:
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly
您可以看出 /etc/crontab 的格式和一般使用者的 crontab 幾乎一樣,唯一分別在星期和執行命令之間多了一欄 (第 6 欄) 指定使用那個使用者的身份執行命令。以上例子中所有工作都是以 root 身份執行。如果命令中有輸出訊息至 stdout 的話,輸出訊息將會被寄到 MAILTO 中的電郵地址。
01 * * * * root run-parts /etc/cron.hourly
以上第一行的意思是說,在每小時的 01 分, 將會執行 /etc/cron.hourly 入面的所有能執行的檔案。
其他定期工作
有一些套件,例如 sysstat、mrtg 等, 都將會安裝一個 cron job, 通常會安裝在 /etc/cron.d 的目錄中。
外部連結
- Linux Gazette, #151: Using Crontab (Joey Prestia 2008-06)












