Linux/Unix 系統裡要做排程式利用crontab來達成的,其用處就是定義系統在固定時間執行要跑的程式,最小時間單位為分,排定時間有以下變化:
要有定時裝置,記憶体內要常註 /usr/sbin/crond 程式
一般 Linux 在開機時會自動載入,如果發現無 crond 在跑,
可以到 /etc/rc.d/ 目錄下看看是否有將執行crond 程式的指令加入開機自動執行檔裡面。
使用者可以用 crontab -e 指令來編寫需要做的工作或者將要執行的工作
或寫在一個 file 裡,再執行 crontab filename 就可以了
所有使用者的 crontab 檔都會存檔 /usr/spool/cron/crontab/ 下,檔名就是該帳號的名字。
crontab 的格式如下,以空白分隔:
分 時 日 月 週幾 指令串
以上比較要注意是週的數字為 0 或 7 時,都代表『星期天』的意思
還有一些輔助的字符,大概有底下這些:
*(星號)
代表任何時刻都接受的意思!舉例來說,範例一內那個日、月、週都是 * , 就代表著『不論何月、何日的禮拜幾的 12:00 都執行後續指令』的意思!
,(逗號)
代表分隔時段的意思。舉例來說,如果要下達的工作是 3:00 與 6:00 時,就會是:
0 3,6 * * * command時間參數還是有五欄,不過第二欄是 3,6 ,代表 3 與 6 都適用!
-(減號)
代表一段時間範圍內,舉例來說, 8 點到 12 點之間的每小時的 20 分都進行一項工作:
20 8-12 * * * command仔細看到第二欄變成 8-12 喔!代表 8,9,10,11,12 都適用的意思!
/n(斜線)
那個 n 代表數字,亦即是『每隔 n 單位間隔』的意思,例如每五分鐘進行一次,則:
*/5 * * * * command
很簡單吧!用 * 與 /5 來搭配,也可以寫成 0-59/5 ,相同意思!
另外寫 crontab 時需注意必須使用 絕對路徑,因此必須寫成 /usr/bin/test.sh
我們就來搭配幾個例子練習看看吧!
例如:
30 12 * * * sh /usr/bin/test.sh
-->在 12:30 時跑 /usr/bin/test.sh 這個Shell
以下是一些範例:
格式:
分 時 日 月 週幾 指令串
# 每日 6:10 a.m. 跑sh /usr/bin/test.sh
10 6 * * * sh /usr/bin/test.sh
# 每兩小時,在0分時
0 */2 * * * sh /usr/bin/test.sh
# 每兩小時從 11p.m. to 7a.m., 以及在 8a.m.
0 23-7/2,8 * * * sh /usr/bin/test.sh
# 在每月4號和每週一/二/三的 11:00 a.m.
0 11 4 * mon-wed sh /usr/bin/test.sh
# 一月一號的4:00 a.m.
0 4 1 jan * sh /usr/bin/test.sh
沒有留言:
張貼留言