1.crontab環境介紹1. cron服務在/etc/init.d/cron2. 執行檔案/usr/sbin/cron3. cron設定檔在/etc/cron.dfile list:.proto,FIFO,at.deny,cron.allow,cron.deny,queuedefs4. cron的串連檔案/usr/lib/cron/ -> ../../etc/cron.d5. 使用者的crontab檔案位置在/usr/spool/cron/crontabs目錄下,以使用者名稱命名的。
2.crontab服務啟動,停止cd /etc/init.d./cron stop./cron start
3.crontab命令說明crontab –l:列出目前使用者的crontab檔案。crontab –l username: 列出指定使用者的crontab檔案。(root使用者)crontab –e:編輯目前使用者的crontab檔案。crontab –e username: 編輯指定使用者的crontab檔案。(root使用者)crontab –r: 刪除目前使用者的crontab檔案。crontab –r username: 刪除指定使用者的crontab檔案。(root使用者)
4.crontab文法說明使用者crontab檔案的文法格式,每行語句為:* * * * * command,每一行表示一個任務,可以有多行語句。第一個*欄位:0~59 表示分
第二個*欄位:1~23 表示小時
第三個*欄位:1~31 表示日
第四個*欄位:1~12 表示月份
第五個*欄位:0~6 表示星期(其中0表示星期日)第五個command欄位:要執行的命令若要20分鐘執行一次某個任務,可以這樣寫:
0,20,40 * * * * command若要5分鐘執行一次某個任務,可以這樣寫:
0,5,10,15,20,25,30,35,40,4,50,55 * * * * command若要每分鐘執行一次某個任務,可以這樣寫:0-59 * * * * commandsolaris下的crontab和linux下不一樣,linux支援
*/5 表示每5分鐘一次
*/20 表示每20分鐘一次
而solaris不支援
5.crontab的編輯器設定如果沒有設定編輯器,crontab –e會調用預設的編輯器。設定編輯器:export EDITOR=vim,然後再調用crontab –e。
6.舉例說明1. export EDITOR=vim2. crontab –e,在檔案裡添加:0-59 * * * * * /export/home/netcool/cron_test.sh儲存,退出(:wq)3. vi /export/home/netcool/cron_test.shecho “aaa” >> /export/home/netcool/cron_test.logchmod a+x /export/home/netcool/cron_test.sh4. 重啟服務cd /etc/init.d/./cron stop停止後ps –ef|grep cron查看是否存在,可以多執行停止命令./cron start
7.Crontab不執行問題的解決辦法
1.1. 確保執行指令碼的路徑正確,最好用全路徑
1.2. 確保環境變數正確可以在shell裡設定好$HOME/.profile的環境變數。可以在shell裡添加環境變數指令碼,e.g.:export OMNIBUS_HOME=/opt/netcool/omnibus
1.3. 許可權問題把目前使用者加到/etc/cron.d/cron.allow,同時確保/etc/cron.d/cron.deny裡沒有目前使用者。如果沒有cron.allow檔案,用root使用者建立此檔案。
1.4. FIFO的問題1. 先殺掉cron進程,可以用ps -ef|grep cron 得出id號,kill -9 PID2. rm /etc/cron.d/FIFO3. ./cron start