首先,在開篇以前,先附上一份cron圖片,此圖片是我從Jenkins的Poll SCM插件的幫助中截取的,有興趣的能夠去了解下……
今天在網上看到一篇文章,關於crontab的,其中有兩點提到了crontab和環境變量,以及須要注意的一些事項,基礎,可是我的以爲說的特別的好,不少時候容易犯錯的每每就是這些基礎,這裏轉載一下。。。好記性不如爛筆頭。。。
原文請參看:
http://yunhaozou.org/linux/109.html
html
2. crontab與環境變量 不要假定cron知道所須要的特殊環境,它其實並不知道。因此你要保證在shelll腳本中提供全部必要的路徑和環境變量,除了一些自動設置的全局變量。因此注意以下3點: 1)腳本中涉及文件路徑時寫全局路徑; 2)腳本執行要用到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 & 3)當手動執行腳本OK,可是crontab死活不執行時。這時必須大膽懷疑是環境變量惹的禍,並能夠嘗試在crontab中直接引入環境變量解決問題。如: 0 * * * * . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh 3. 其餘應該注意的問題 1)新建立的cron job,不會立刻執行,至少要過2分鐘才執行。若是重啓cron則立刻執行。 2)每條 JOB 執行完畢以後,系統會自動將輸出發送郵件給當前系統用戶。日積月累,很是的多,甚至會撐爆整個系統。因此每條 JOB 命令後面進行重定向處理是很是必要的: >/dev/null 2>&1 。前提是對 Job 中的命令須要正常輸出已經做了必定的處理, 好比追加到某個特定日誌文件。 3)當crontab忽然失效時,能夠嘗試/etc/init.d/crond restart解決問題。或者查看日誌看某個job有沒有執行/報錯tail -f /var/log/cron。 4)千萬別亂運行crontab -r。它從Crontab目錄(/var/spool/cron)中刪除用戶的Crontab文件。刪除了該用戶的全部crontab都沒了。 5)在crontab中%是有特殊含義的,表示換行的意思。若是要用的話必須進行轉義\%,如常常用的date ‘+%Y%m%d’在crontab裏是不會執行的,應該換成date ‘+\%Y\%m\%d’`。