crontab的問題



贊助商連結


yilang
2002-06-17, 02:41 PM
請問一下關於crontab的問題

使用以下兩種方式進行程序週期的設定有何不同?
(1) crontab -e 輸入週期的程序
(2) 編輯 /etc/crontab

這兩者有何不同的呢?

因為我設定要週期執行mrtg的程序時,無法自動於指定的週期內執行...

謝謝!

贊助商連結


bentong
2002-06-19, 12:13 AM
crontab是一個系統的排程式工具,
您可以運用他來做自己的主機排程~

說的簡單一些就是讓系統定時的執行使用者
所排定的程式.

好了!我們來說明一下:

1.crontab的參數
-e : 編輯排程
-l : 列出所有排程
-r : 刪除排程檔案

註:基本上系統預設的編輯器都是vi所以您必須要學一下vi哦!
這一個東東改天再做介紹.
但是我們先教一些簡單的執行方式.
vi編輯器分成三種模式
1.功能模式 -->按esc就會到這一個模式
2.編輯模式 -->按a就會進入編輯模式
3.指令模式 -->使用 : 及 / 和 ?就可以進入指令模式
在指今模式 --> wq! 代表寫入並離開

這有相關的介紹http://nmc.nchu.edu.tw/linux/vi.htm

好了~我們來試試編輯一個排程

#crontab -e (指編輯crontab)
-->進入vi模式後按 a 進入 編輯模式

再接下來我們就可以開始學crontab的內容了
我們把他分成二個部份!
[1.時間設定] [2.程式設定]
1.在時間設定上 有5個設定排列方式大概是這樣:

[分 時 日 月 週]
1. 分 (0-59)

2. 時 (0-23)
3. 日 (1-31)

4. 月 (1-12 )
5. 週(0-7) ; 星期日= 0或7

[時] 的設定上好像可以執行AM及PM但是小弟沒有試過.
一般都使用24小時制,
還有 * 代表 每[時間設定]
2.程式設定
這個比較簡單只要選定要執行的程式就行了! 但是請注意您的程式路徑!! 比如執行 ls $HOME > $HOME/test.txt 是指列出使用者的家目錄再寫入test.txt !!起算點好像是 / 目錄.所以建議您使用絕對路徑
實際寫作
#我們來實除寫一些運用好了! #可以用 # 做註解哦
#(以下 [每分 每時 每天 每月 每週] 都執行程式)
* * * * * ls $HOME > $HOME/test.txt
#簡單的說就是分鐘執行


#(以下 [05分 每時 每天 每月 每週] 都執行程式)
05 * * * * ls $HOME > $HOME/test.txt
#簡單的說就是每小時的五分執行 (一天24次)


#(以下 [05分 每時 每天 每月 每週5] 都執行程式)
05 * * * 5 ls $HOME > $HOME/test.txt
#簡單的說就是在星期五時每小時的五分執行(一週一次)


#(以下 [每分 10時 每天 每月 每週5] 都執行程式)
* 10 * * 5 ls $HOME > $HOME/test.txt
#簡單的說就是在 [星期五] [10] 點的每分鐘都 執行(一小時 60次)


#設定方式很簡單吧( ^ ^ )接下來再設定一些比較特殊的
#(您也可以用 "," 分開 讓多個時間執行)
* 10,16,20 * * 5 ls $HOME > $HOME/test.txt
#簡單的說就是在 [星期五] [10,16,20] 點的每分鐘都 執行(一小時 60次 x3 = 180次)


#(您也可以用 "," 分開 讓多個時間執行)
* 10,16,20 * * 5,1 ls $HOME > $HOME/test.txt
#簡單的說就是在 [星期五] [星期一] [10,16,20] 點的每分鐘都 執行(一小時 60次 x3 x2= 360次)


#設定時間間隔
#(您也可以用 " / " 設定時間間隔)
*/5 10 * * 5 ls $HOME > $HOME/test.txt
#簡單的說就是在 [星期五] 的 [10] 點 每當 分鐘為 5的倍數時執行 執行(60/5= 12次)


#(您也可以用 " / " 設定時間間隔)
*/5 */10 * * 5 ls $HOME > $HOME/test.txt
#簡單的說就是在 [星期五] 的 每當 分鐘為 5的倍數 而且小時是10的倍數 執行 執行(60/5 x 24/10 = 24次)


大概crontab 的設定規則就是這樣了!
記得您在編輯完後 按下Esc跳出 再下 :wq 就可以跳出存檔!
如果您的設定沒有出錯會出現

crontab: installing new crontab

快試試吧 ^ ^!
註:在crontab執行完後系統會發一封信給您!
如果 您不想收到一大堆的系統回報,
您可以設定執行完!把信送到垃圾桶!
設定如下:

*/5 10 * * 5 ls $HOME > $HOME/test.txt > /dev/null

這樣就不會收到一大堆的回報信件了