1.crontab環境介紹 1. cron服務在/etc/init.d/cron 2. 執行文件/usr/sbin/cron 3. cron配置文件在/etc/cron.d file list:.proto,FIFO,at.deny,cron.allow,cron.deny,queuedefs 4. cron的連接文件 /usr/lib/cron/ -> ../../etc/cron.d 5. 用戶的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 * * * * command solaris下的crontab和linux下不一樣,linux支持 */5 表示每5分鐘一次 */20 表示每20分鐘一次 而solaris不支持 5.crontab的編輯器設置 如果沒有設置編輯器,crontab –e會調用缺省的編輯器。 設置編輯器:export EDITOR=vim,然後再調用crontab –e。
6.舉例說明 1. export EDITOR=vim 2. crontab –e,在文件裏添加: 0-59 * * * * * /export/home/netcool/cron_test.sh 保存,退出(:wq) 3. vi /export/home/netcool/cron_test.sh echo “aaa” >> /export/home/netcool/cron_test.log chmod a+x /export/home/netcool/cron_test.sh 4. 重啓服務 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 PID 2. rm /etc/cron.d/FIFO 3. ./cron start