crontab [-u user] [ -e | -l | -r ]
-u user:用來設定某個用戶的crontab服務;
file:file是命令文件的名字,表示將file做為crontab的任務列表文件並載入crontab。如果在命令行中沒有指定這個文件,crontab命令將接受標准輸入(鍵盤)上鍵入的命令,並將它們載入crontab。
-e:編輯某個用戶的crontab文件內容。如果不指定用戶,則表示編輯當前用戶的crontab文件。
-l:顯示某個用戶的crontab文件內容,如果不指定用戶,則表示顯示當前用戶的crontab文件內容。
-r:從/var/spool/cron目錄中刪除某個用戶的crontab文件,如不指定用戶,則默認刪除當前用戶的crontab文件。
-i:在刪除用戶的crontab文件時給確認提示。
分 時 日 月 星期 要運行的命令
第1列分鐘1~59
第2列小時1~23(0表示子夜)
第3列日1~31
第4列月1~12
第5列星期0~6(0表示星期天)
第6列要運行的命令
EDITOR=vi; export EDITOR
然後保存並退出。不妨創建一個名為<user> cron的文件,其中<user>是用戶名,例如, davecron。在該文件中加入如下的內容。
# (put your own initials here)echo the date to the console every
# 15minutes between 6pm and 6am
0,15,30,45 18-06 * * * /bin/echo 'date' > /dev/console
保存並退出。注意前面5個域用空格分隔。
為了提交你剛剛創建的crontab文件,可以把這個新創建的文件作為cron命令的參數:
$ crontab davecron
列出crontab文件,使用-l參數列出crontab文件: #crontab -l
使用這種方法在$HOME目錄中對crontab文件做一備份#crontab -l > $HOME/mycron
編輯crontab文件 #crontab -e
刪除crontab文件#crontab -r
使用實例
每1分鐘執行一次myCommand * * * * * myCommand
每小時的第3和第15分鐘執行 3,15 * * * * myCommand
在上午8點到11點的第3和第15分鐘執行 3,15 8-11 * * * myCommand
每隔兩天的上午8點到11點的第3和第15分鐘執行 3,15 8-11 */2 * * myCommand
每周一上午8點到11點的第3和第15分鐘執行 3,15 8-11 * * 1 myCommand
每晚的21:30重啟smb 30 21 * * * /etc/init.d/smb restart
每月1、10、22日的4 : 45重啟smb 45 4 1,10,22 * * /etc/init.d/smb restart
每周六、周日的1 : 10重啟smb 10 1 * * 6,0 /etc/init.d/smb restart
晚上11點到早上7點之間,每隔一小時重啟smb * 23-7/1 * * * /etc/init.d/smb restart
使用注意事項
創建了一個crontab,但是這個任務卻無法自動執行,而手動執行這個任務卻沒有問題
由於在crontab文件中沒有配置環境變量引起
腳本中涉及文件路徑時寫全局路徑;
腳本執行要用到java或其他環境變量時,通過source命令引入環境變量
cat start_cbp.sh
!/bin/sh
source /etc/profile
export RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf
/usr/local/jboss-4.0.5/bin/run.sh -c mev &
當手動執行腳本OK,但是crontab死活不執行時,很可能是環境變量惹的禍,可嘗試在crontab中直接引入環境變量解決問題。如:
0 * * * * . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh
系統級任務調度與用戶級任務調度
系統級任務調度主要完成系統的一些維護操作,用戶級任務調度主要完成用戶自定義的一些任務,可以將用戶級任務調度放到系統級任務調度來完成(不建議這麼做),但是反過來卻不行,root用戶的任務調度操作可以通過”crontab –uroot –e”來設置,也可以將調度任務直接寫入/etc/crontab文件,需要注意的是,如果要定義一個定時重啟系統的任務,就必須將任務放到/etc/crontab文件,即使在root用戶下創建一個定時重啟系統的任務也是無效的。
其他注意事項
新創建的cron job,不會馬上執行,至少要過2分鐘才執行。如果重啟cron則馬上執行。
當crontab失效時,可以嘗試以下語句,以便解決問題
/etc/init.d/crond restart
或者查看日志看某個job有沒有執行/報錯 tail -f /var/log/cron。
千萬別亂運行,它從Crontab目錄(/var/spool/cron)中刪除用戶的Crontab文件。刪除了該用戶的所有crontab
crontab -r
更新系統時間時區後需要重啟cron,在ubuntu中服務名為cron:
$service cron restart
date ‘+%Y%m%d’
date ‘+%Y%m%d’
歡迎大家分享更好的思路,熱切期待^^_^^ !