下面就介紹一下在我們開(kāi)發(fā)過(guò)程中經(jīng)常要用到的crontab命令,以及一些基本的定時(shí)任務(wù)文件的書(shū)寫(xiě)規(guī)則。
名稱(chēng) : crontab
使用權(quán)限 : 所有使用者
使用方式 :
crontab filecrontab [ -u user ] [ -u user ] { -l | -r | -e }
說(shuō)明 :
crontab 是用來(lái)讓使用者在固定時(shí)間或固定間隔執(zhí)行程式之用,換句話(huà)說(shuō),也就是類(lèi)似使用者的時(shí)程表。
-u user : 是指設(shè)定指定 user 的時(shí)程表,這個(gè)前提是你必須要有其權(quán)限(比如說(shuō)是 root)才能夠指定他人的時(shí)程表。如果不使用 -u user的話(huà),就是表示設(shè)定自己的時(shí)程表。
參數(shù) :
-e : 執(zhí)行文字編輯器來(lái)設(shè)定時(shí)程表,內(nèi)定的文字編輯器是 VI,如果你想用別的文字編輯器,則請(qǐng)先設(shè)定 VISUAL 環(huán)境變數(shù)來(lái)指定使用那個(gè)文字編輯器(比如說(shuō) setenv VISUAL joe)
注:crontab -e后,會(huì)自動(dòng)將添加的定時(shí)任務(wù)文件存到/var/spool/cron/tabs/zxin10文件中去(zxin10是用戶(hù)名,表示在當(dāng)前用戶(hù)下設(shè)置定時(shí)任務(wù))
-r : 刪除目前的時(shí)程表
-l : 列出目前的時(shí)程表
時(shí)程表的格式如下 :
f1 f2 f3 f4 f5 program
其中 f1 是表示分鐘,f2 表示小時(shí),f3 表示一個(gè)月份中的第幾日,f4 表示月份,f5 表示一個(gè)星期中的第幾天。program 表示要執(zhí)行的程式。
當(dāng) f1 為 * 時(shí)表示每分鐘都要執(zhí)行 program,f2 為 * 時(shí)表示每小時(shí)都要執(zhí)行程式,其余類(lèi)推
當(dāng) f1 為 a-b 時(shí)表示從第 a 分鐘到第 b 分鐘這段時(shí)間內(nèi)要執(zhí)行,f2 為 a-b 時(shí)表示從第 a 到第 b 小時(shí)都要執(zhí)行,其余類(lèi)推
當(dāng) f1 為 */n 時(shí)表示每 n 分鐘個(gè)時(shí)間間隔執(zhí)行一次,f2 為 */n 表示每 n 小時(shí)個(gè)時(shí)間間隔執(zhí)行一次,其余類(lèi)推
當(dāng) f1 為 a, b, c,... 時(shí)表示第 a, b, c,... 分鐘要執(zhí)行,f2 為 a, b, c,... 時(shí)表示第 a, b, c...個(gè)小時(shí)要執(zhí)行,其余類(lèi)推
使用者也可以將所有的設(shè)定先存放在檔案 file 中,用 crontab file 的方式來(lái)設(shè)定時(shí)程表。
使用方法:
用vi編輯一個(gè)文件cronfile,然后在這個(gè)文件中輸入格式良好的時(shí)程表。編輯完成后,保存并退出。
在命令行輸入
zxin10@linux: crontab cronfile
這樣就將cronfile文件提交給cron進(jìn)程,同時(shí),新創(chuàng)建cronfile的一個(gè)副本已經(jīng)被放在/var/spool/cron目錄中,文件名就是用戶(hù)名。
注:crontab cronfile操作后會(huì)將原來(lái)存在/var/spool/cron目錄下用戶(hù)名的文件中的信息覆蓋掉。
crontab -e 和 crontab file使用時(shí)候需要注意的:
test.sh的定時(shí)任務(wù)命令格式
0 0 1 * * /home/zxin10/task/test.sh >> test.log


【新增定時(shí)任務(wù)】
crontab -e 編輯中加入:
0 0 1 * * /home/zxin10/task/test.sh >> test.log

當(dāng)OS重啟后,再
crontab -l
test.sh腳本的定時(shí)任務(wù)命令會(huì)丟失

為了防止這種情況:
先建立一個(gè)如mytabs的文件
vi mytabs
編輯后加入:
0 0 1 * * /home/zxin10/task/test.sh >> test.log

再執(zhí)行crontab mytabs
將文件mytabs中的test.sh腳本的定時(shí)任務(wù)加入到crontab中

crontab -l可以查詢(xún)到新增的tesh.sh定時(shí)任務(wù),系統(tǒng)重啟后,test.sh腳本的定時(shí)任務(wù)也不會(huì)丟失。

【清理定時(shí)任務(wù)】
vi mytabs文件
將其中需要的任務(wù)test.sh手工刪除,并保存退出

再執(zhí)行crontab mytabs,系統(tǒng)會(huì)將刪除腳本test.sh后的mytabs文件信息重新加入

到crontab中

crontab -l 則查詢(xún)不到刪除的test.sh腳本的定時(shí)任務(wù)


【定時(shí)任務(wù)消失】
當(dāng)用crontab -e 編輯crontab的定時(shí)任務(wù)test.sh

crontab -l可以查詢(xún)得到腳本test.sh的定時(shí)任務(wù)命令

但當(dāng)執(zhí)行crontab mytabs后,系統(tǒng)會(huì)將mytabs文件中的定時(shí)腳本重新加到crontab中,如果mytabs文件中沒(méi)有test.sh的定時(shí)任務(wù)

則執(zhí)行crontab -l 就查詢(xún)不到腳本test.sh的定時(shí)任務(wù)






注意: 當(dāng)程式在你所指定的時(shí)間執(zhí)行后,系統(tǒng)會(huì)寄一封信給你,顯示該程式執(zhí)行的內(nèi)容,若是你不希望收到這樣的信,請(qǐng)?jiān)诿恳恍锌找桓裰蠹由?gt;/dev/null 2>&1 即可。
posted on 2008-03-27 20:47
cheng 閱讀(2253)
評(píng)論(1) 編輯 收藏 所屬分類(lèi):
Unix/Linux