crontab 間隔時間執行

轉載地址:http://blog.chinaunix.net/uid-24426415-id-77489.html


怎樣實現間隔固定時間執行我們想做的工作,比如每5分中

在linux 我們可以這樣實現 

*/5 * * * * command

但是在AIX裏面出現錯誤

[code]
"/tmp/crontabEB5gya" 8 lines, 239 characters
A line of the crontab file:
        */5 * * * * /tmp/notice.sh

contains the following error:
        0481-079 Reached a symbol that is not expected.
[/code]
可以這樣實現,也只能這樣實現:
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /tmp/notice.sh

因爲AIX與Solaris都不支持類似Linux的形式。
 
 在solaris下crontab -e命令出錯,原來是需要設置export EDITOR=vi,下面是詳細的說明。

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服務啓動,停止
/usr/sbin/cron stop
/usr/sbin/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. 重啓服務
/usr/sbin/cron stop
停止後ps –ef|grep cron查看是否存在,可以多執行停止命令
/usr/sbin/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. /usr/sbin/cron start

1.5. Solaris對於沒有密碼、沒有被啓用、密碼失效的用戶是不執行crontab的


發佈了3 篇原創文章 · 獲贊 6 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章