循環性工作:
欲設定循環性工作,必須先開啟crond這個daemon(daemon,是linux系統中提供服務的機制)。因linux系統有自己內建的循環性工作,故系統在預設上是開啟crond的。
1. 循環性工作,有分「使用者循環性工作」和「系統循環性工作」。「系統循環性工作」的設定檔在/etc/cron或者是/etc/crontab;「使用者循環性工作」的設定檔在「/var/spool/cron/crontabs/使用者帳號」,這個檔案一般只有root才有權看到,而若使用者從未在系統中使用過crontab,則這個檔案不會被建立。
循環性工作設定檔有其格式,為:
設定列
工作列
舉實例說明,如筆者自行建立的設定檔,其內容為:
#以下是設定列
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=user
HOME=/home/user
#以下是工作列
05 * * * * mkdir ~/DIR
20 10 5 5 * mkdir ~/HHH
※ 本格式,也是一般最常用的格式。
※ 井字號#之後的文字是註解,對循環性工作的設定毫無影響。
(1) 其中,設定列是在設定工作環境:
SHELL:表示執行工作時要用的shell。
PATH:其中的目錄,是可以用來執行循環性工作之指令的所在目錄。如果沒有寫PATH,則工作列中的指令必須用命令執行檔。也就是說mkdir之類的命令,系統會因看不懂而無法執行,必須寫成/bin/mkdir這種完整的命令執行檔路徑名。
MAILTO:是當系統循環性工作有標準輸出或標準錯誤輸出時,會將這些輸出用mail的方式寄給誰。
HOME:命令執行者的家目錄。
(2) 命令列,也就是循環性工作的實際工作內容,其寫法為:
分 時 日 月 星期 命令
(2-1) 分:正整數,其值為0~59。
(2-2) 時:正整數,其值為0~23。
(2-3) 日:正整數,其值為1~31。
(2-4) 月:正整數,其值為1~12。
(2-5) 星期:正整數,其值為0~6。0代表星期天,1代表星期一,以此類推。
(2-6) 命令:也就是實際執行的命令。若要執行規模較大的循環性工作,一般做法是將工作內容寫在一個shell script中,而命令,就是執行此shell script。此外,若命令中牽涉到檔案或目錄的操作,則路徑的形式最好是絕對路徑。
※ 註(重要!!):分、時、日、月、星期的值除了正整數外,還有以下的寫法:
(※-1) *:星號,類似萬用字元的概念,代表「任何允許的值」。如:
05 * * * * 命令
表示在每月、每天、每小時的05分,執行一次命令。
(※-2) 值一,值二,值三…:代表「值的聯集」。如:
05,10,15,20 * * * * 命令
表示在每月、每天、每小時的05分、10分、15分、20分,執行一次命令。
(※-3) 值一-值二:虛線,代表「值的範圍」。如:
05-15 * * * * 命令
表示在每月、每天、每小時的05分到15分,執行一次命令。執行時間的最小間隔為一分鐘。
(※-3)* /值:代表「每隔一次值」。如:
*/10 * * * * 命令
表示每隔10分鐘,執行一次命令。
(3) 注意事項:
(3-1) 循環性工作執行失敗的主要原因有:操作權限不符、輸入的命令有誤、PATH沒有設定。
(3-2) 月、日、星期的用法要注意,如:
00 12 * * 5 命令:表示每個星期五的12:00執行一次命令。
00 12 3 5 * 命令:表示每年三月五日的12:00執行一次命令。
00 12 3 5 5 命令:表示每年的三月五日的12:00、以及每個星期五的12:00執行一次命令。並不表示「若每年的三月五日為星期五時,才在12:00執行一次命令」,勿誤解。
(3-3) 盡量勿讓系統在同一分鐘執行大量工作,最好是平均分散在不同的分鐘上執行工作。以免系統過忙碌而導致錯誤。
留言列表