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


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


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


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


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


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

