今天在服務器上安裝郵箱服務時提示crontab:command not found
才知道服務器centOS上沒有這個crontab即操作每個用戶的守護程序和該執(zhí)行的時間表。
crontab命令常見于Unix和類Unix的操作系統(tǒng)之中,用于設置周期性被執(zhí)行的指令,。該命令從標準輸入設備讀取指令,并將其存放于“crontab”文件中,,以供之后讀取和執(zhí)行。該詞來源于希臘語chronos(χρ?νο?),,原意是時間,。
通常,crontab儲存的指令被守護進程激活,, crond常常在后臺運行,,每一分鐘檢查是否有預定的作業(yè)需要執(zhí)行。這類作業(yè)一般稱為cron jobs,。
沒有那就安裝吧:
使用yum安裝crontab:
[root@CentOS ~]# yum install vixie-cron
[root@CentOS ~]# yum install crontabs
說明:
vixie-cron軟件包是cron的主程序;
crontabs軟件包是用來安裝,、卸裝、或列舉用來驅動 cron 守護進程的表格的程序,。
//+++++++++++++++++++++++++++++++++++
cron 是linux的內置服務,,但它不自動起來,可以用以下的方法啟動,、關閉這個服務:
/sbin/service crond start //啟動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啟服務
/sbin/service crond reload //重新載入配置
查看crontab服務狀態(tài):service crond status
手動啟動crontab服務:service crond start
查看crontab服務是否已設置為開機啟動,,執(zhí)行命令:ntsysv
沒有就加入開機自動啟動:免得每次手動啟動麻煩:chkconfig --level 35 crond on
語法介紹:
使用權限:root用戶和crontab文件的所有者
語 法:crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ]
說 明:
crontab 是用來讓使用者在固定時間或固定間隔執(zhí)行程序之用,換句話說,,也就是類似使用者的時程表,。-u user 是指設定指定 user 的時程表,這個前提是你必須要有其權限(比如說是 root)才能夠指定他人的時程表,。如果不使用 -u user 的話,,就是表示設定自己的時程表。
參 數: -e [UserName]: 執(zhí)行文字編輯器來設定時程表,,內定的文字編輯器是 VI,,如果你想用別的文字編輯器,則請先設定 VISUAL 環(huán)境變數來指定使用那個文字編輯器(比如說 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í)行的程序
使用者也可以將所有的設定先存放在檔案file中,,用crontab file的方式來設定時程表。
由于Unix版本不一樣,,所以部分語法也有差別,,請具體情況實際解決。
使用方法:
用VI編輯一個文件 cronfile,,然后在這個文件中輸入格式良好的時程表,。編輯完成后,,保存并退出。
在命令行輸入 $: crontab cronfile 這樣就將cronfile文件提交給c r o n進程,,同時,,新創(chuàng)建cronfile的一個副本已經被放在/ v a r / s p o o l / c r o n目錄中,文件名就是用戶名,。
crontab文件的一些例子:
每月每天每小時的第 0 分鐘執(zhí)行一次 /bin/ls :
0 * * * * /bin/ls
在 12 月內, 每天的早上 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方式,,否則出現語法錯誤
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í)行的內容,,若是你不希望收到這樣的信,,請在每一行空一格之后加上 > /dev/null 2>&1 即可?! ?. %在crontab中被認為是newline,,要用\來escape才行。比如crontab執(zhí)行行中,,如果有"date +%Y%m%d",,必須替換為:"date +\%Y\%m\%d"


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


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


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


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


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

