2011-05-17 101 views
0

我對cron和crontab相當陌生。crontab和測試要執行的命令

我編輯了crontab文件,我需要手動執行其中一個命令,以便我可以嘗試並預先測試它。我怎麼做?如果失敗,是否有一個顯示錯誤的模式?

回答

1
  1. 寫一個你可以測試的shell腳本。
  2. 從crontab執行該shell腳本。
  3. 請記住,cron幾乎沒有提供任何環境 - 所以你的腳本可能不得不解決這個問題。特別是,您的個人資料將不會被使用。
  4. 不要喜歡你放在crontab中的東西。
  5. 在您的shell腳本中構建調試模式。

不,沒有具體顯示錯誤的模式。通常,如果cron作業有問題,輸出將通過電子郵件發送給您。也就是說,如果執行的命令將任何內容寫入標準輸出或標準錯誤,它會向您發送標準輸出和標準錯誤信息。

在MacOS X(10.6.7),我得到的環境下(通過crontab進入像12 37 17 5 * env >/tmp/cron.env):

SHELL=/bin/sh 
USER=jleffler 
PATH=/usr/bin:/bin 
PWD=/Users/jleffler 
SHLVL=1 
HOME=/Users/jleffler 
LOGNAME=jleffler 
_=/usr/bin/env 

其中,PWD_SHLVL由shell進行處理。因此,爲了可靠地測試你的腳本在cron般的環境中,使用:

(cd $HOME 
env -i \ 
    SHELL=/bin/sh \ 
    USER=$USER \ 
    PATH=/usr/bin:/bin \ 
    HOME=$HOME \ 
    LOGNAME=$LOGNAME \ 
    /path/to/script/you/execute ... 
) 

-i選項env手段「忽略所有繼承的環境」;該腳本將完全看到指定的五個值以及shell自動指定的任何值。沒有參數,env報告環境;有參數,它調整環境並執行命令。

0

執行腳本「手動」你首先必須做,使其可執行:

$ chmod +x yourScriptName 

然後做任何

$ ./yourScriptName 
如果從它的路徑執行它

$ /full/path/to/yourScriptName 

從任何地方。