今天在服務(wù)器上安裝郵箱服務(wù)時提示crontab:command not found
才知道服務(wù)器centOS上沒有這個crontab即操作每個用戶的守護程序和該執(zhí)行的時間表。
crontab命令常見于Unix和類Unix的操作系統(tǒng)之中,用于設(shè)置周期性被執(zhí)行的指令,。該命令從標準輸入設(shè)備讀取指令,,并將其存放于“crontab”文件中,以供之后讀取和執(zhí)行。該詞來源于希臘語chronos(χρ?νο?),原意是時間。
通常,,crontab儲存的指令被守護進程激活, crond常常在后臺運行,,每一分鐘檢查是否有預(yù)定的作業(yè)需要執(zhí)行,。這類作業(yè)一般稱為cron jobs,。
沒有那就安裝吧:
使用yum安裝crontab:
[root@CentOS ~]# yum install vixie-cron
[root@CentOS ~]# yum install crontabs
說明:
vixie-cron軟件包是cron的主程序;
crontabs軟件包是用來安裝、卸裝,、或列舉用來驅(qū)動 cron 守護進程的表格的程序,。
//+++++++++++++++++++++++++++++++++++
cron 是linux的內(nèi)置服務(wù),但它不自動起來,,可以用以下的方法啟動,、關(guān)閉這個服務(wù):
/sbin/service crond start //啟動服務(wù)
/sbin/service crond stop //關(guān)閉服務(wù)
/sbin/service crond restart //重啟服務(wù)
/sbin/service crond reload //重新載入配置
查看crontab服務(wù)狀態(tài):service crond status
手動啟動crontab服務(wù):service crond start
查看crontab服務(wù)是否已設(shè)置為開機啟動,執(zhí)行命令:ntsysv
沒有就加入開機自動啟動:免得每次手動啟動麻煩:chkconfig --level 35 crond on
語法介紹:
使用權(quán)限:root用戶和crontab文件的所有者
語 法:crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ]
說 明:
crontab 是用來讓使用者在固定時間或固定間隔執(zhí)行程序之用,,換句話說,,也就是類似使用者的時程表。-u user 是指設(shè)定指定 user 的時程表,,這個前提是你必須要有其權(quán)限(比如說是 root)才能夠指定他人的時程表,。如果不使用 -u user 的話,就是表示設(shè)定自己的時程表,。
參 數(shù): -e [UserName]: 執(zhí)行文字編輯器來設(shè)定時程表,,內(nèi)定的文字編輯器是 VI,如果你想用別的文字編輯器,,則請先設(shè)定 VISUAL 環(huán)境變數(shù)來指定使用那個文字編輯器(比如說 setenv VISUAL joe) -r [UserName]: 刪除目前的時程表 -l [UserName]: 列出目前的時程表 -v [UserName]:列出用戶cron作業(yè)的狀態(tài)
時程表的格式:
f1 f2 f3 f4 f5 program
分 時 日 月 周 命令
f1表示分鐘,1~59 每分鐘用*或者 */1表示
f2表示小時,1~23(0表示0點)
f3表示日期即一個月份中的第幾日,1~31
f4表示月份,1~12
f5標識星期,0~6(0表示星期天)
f6要執(zhí)行的程序
使用者也可以將所有的設(shè)定先存放在檔案file中,,用crontab file的方式來設(shè)定時程表。
由于Unix版本不一樣,,所以部分語法也有差別,,請具體情況實際解決。
使用方法:
用VI編輯一個文件 cronfile,,然后在這個文件中輸入格式良好的時程表。編輯完成后,,保存并退出,。
在命令行輸入 $: crontab cronfile 這樣就將cronfile文件提交給c r o n進程,同時,,新創(chuàng)建cronfile的一個副本已經(jīng)被放在/ v a r / s p o o l / c r o n目錄中,,文件名就是用戶名。
crontab文件的一些例子:
每月每天每小時的第 0 分鐘執(zhí)行一次 /bin/ls :
0 * * * * /bin/ls
在 12 月內(nèi), 每天的早上 6 點到 12 點中,,每隔 20 分鐘執(zhí)行一次 /usr/bin/backup :
*/20 6-12 * 12 * /usr/bin/backup
周一到周五每天下午 5:00 寄一封信給 alex_mail_name :
0 17 * * 1-5 mail -s "hi" alex_mail_name < /tmp/maildata
每月每天的午夜 0 點 20 分, 2 點 20 分, 4 點 20 分....執(zhí)行 echo "haha"
20 0-23/2 * * * echo "haha"
晚上11點到早上8點之間每兩個小時,,早上8點
0 23-7/2,8 * * * date
在hp unix,中,,每20分鐘執(zhí)行一次,,表示為:0,20,40 * * * * 而不能采用*/n方式,否則出現(xiàn)語法錯誤
30 18 * * * /usr/local/etc/rc.d/lighttpd restart
每天的18:30重啟apache,。
30 8 1,15,30 * * /usr/local/etc/rc.d/lighttpd restart
每月1,、15,、30日的08 : 30重啟apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
每周六,、周日的1 : 10重啟apache,。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
在每天18 : 00至23 : 00之間每隔30分鐘重啟apache。
0 22 * * 6 /usr/local/etc/rc.d/lighttpd restart
每星期六的10 : 00 pm重啟apache,。
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小時重啟apache
* 22-8/2 * * * /usr/local/etc/rc.d/lighttpd restart
晚上10點到早上8點之間,,每隔2小時重啟apache
0 8 15 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的15號與每周一到周三的8點重啟apache
0 8 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一號的8點重啟apache
*/60 * * * * /usr/sbin/ntpdate 210.72.145.44
每小時同步一下時間
注意:
1. 當程式在你所指定的時間執(zhí)行后,系統(tǒng)會寄一封信給你,,顯示該程式執(zhí)行的內(nèi)容,,若是你不希望收到這樣的信,請在每一行空一格之后加上 > /dev/null 2>&1 即可,?! ?. %在crontab中被認為是newline,要用\來escape才行,。比如crontab執(zhí)行行中,,如果有"date +%Y%m%d",必須替換為:"date +\%Y\%m\%d"


在考慮向cron進程提交一個crontab文件之前,,首先要做的一件事情就是設(shè)置環(huán)境變量EDITOR,。cron進程根據(jù)它來確定使用哪個編輯器編輯crontab文件。99 %的UNIX和LINUX用戶都使用vi,,如果你也是這樣,,那么你就編輯$HOME目錄下的.profile文件,在其中加入這樣一行: EDITOR=vi; export EDITOR 然后保存并退出,?! 〔环羷?chuàng)建一個名為cron的文件,其中是用戶名,,為了提交你剛剛創(chuàng)建的crontab文件,,可以把這個新創(chuàng)建的文件作為cron命令的參數(shù): $ crontab davecron 現(xiàn)在該文件已經(jīng)提交給cron進程,同時,,新創(chuàng)建文件的一個副本已經(jīng)被放在/var/spool/cron目錄中,,文件名就是用戶名(即,dave),。


為了列出crontab文件,,可以用: $crontab -l


如果希望添加、刪除或編輯crontab文件中的條目,,而EDITOR環(huán)境變量又設(shè)置為vi,,那么就可以用vi來編輯crontab文件,相應(yīng)的命令為: $ crontab -e 可以像使用vi編輯其他任何文件那樣修改crontab文件并退出,。


為了刪除crontab文件,,可以用: $ crontab -r


如果不小心誤刪了crontab文件,,假設(shè)你在自己的$HOME目錄下還有一個備份,那么可以將其拷貝到/var/spool/cron/,,其中是用戶名,。如果由于權(quán)限問題無法完成拷貝,可以用: $ crontab 其中,,是你在$HOME目錄中副本的文件名,。

