有可能會影響通過cron
運行的程序與命令行(比由羅伯特寶潔描述「%
」的招牌解釋等)相比的另一個特點問題。
不同之處在於環境。如果程序運行依賴於特殊的環境變量,那麼當它通過命令行運行並且通常使用的環境時,它就會工作,如果你使用at
運行它,它很可能會工作,因爲它在創建時捕獲環境工作。但cron
沒有特殊的環境設置。
因此,我習慣性地配置cron
以絕對路徑名運行腳本,並且該腳本執行我需要的環境設置(例如,將我的$HOME/bin
目錄添加到PATH中)。我甚至有一個標準化的基礎設施 - 一個設置環境並運行其他程序的shell腳本。
# @(#)$Id: crontab,v 4.2 2007/09/17 02:41:00 jleffler Exp $
# Crontab file for Home Directory for Jonathan Leffler (JL)
#-----------------------------------------------------------------------------
#Min Hour Day Month Weekday Command
#-----------------------------------------------------------------------------
0 * * * * /usr/bin/ksh /work1/jleffler/bin/Cron/hourly
1 1 * * * /usr/bin/ksh /work1/jleffler/bin/Cron/daily
23 1 * * 1-5 /usr/bin/ksh /work1/jleffler/bin/Cron/weekday
2 3 * * 0 /usr/bin/ksh /work1/jleffler/bin/Cron/weekly
21 3 1 * * /usr/bin/ksh /work1/jleffler/bin/Cron/monthly
在/work1/jleffler/bin/Cron
腳本設置環境,然後運行同一個名字的/work1/jleffler/bin
腳本做實際工作。 Cron
子目錄中的名稱實際上是到同一腳本的所有鏈接。
你是對的。我看着錯誤的man頁面(只是man crontab而不是man 5 crontab)。 – 2008-12-12 15:28:44