2017-04-12 124 views
0

我想設置我的系統上的cron作業尚未crontab的不通過添加以下行執行[R腳本

17 12 * * * Rscript ~/path/to/file/script.R > ~/output_`date +\%d\%m\%y`.txt 2>&1 

,我不能看到輸出被寫入文件。我已經諮詢了以下的答案,但無濟於事:

Why did my crontab not trigger

CronJob not running

當我運行在終端上執行以下命令:

Rscript ~/path/to/file/script.R > ~/output_`date +\%d\%m\%y`.txt 2>&1 

我得到的輸出文件預期。我還添加了以下行到crontab:

* * * * * echo hi > ~/output.txt 2>&1 

它工作得很好。我不確定第一個命令有什麼問題。任何幫助,將不勝感激。謝謝。

+0

如果使用完整路徑而不是使用'〜',該怎麼辦?一般來說,crontab不理解這些,因爲它的環境非常有限。 – fedorqui

+0

我試過使用完整路徑。這似乎不是問題。我在另一臺ubuntu機器上運行同樣的東西,它沒有任何麻煩。 – WitchKingofAngmar

+0

cron日誌中有沒有任何痕跡? – fedorqui

回答

0

嘗試下面的把戲,創建一個腳本,script.sh像下面 -

cat script.sh 
Rscript ~/path/to/file/script.R > ~/output_$(date +\%d\%m\%y).txt 2>&1 

然後創建下面的crontab項。

17 12 * * * script.sh 
+0

爲什麼這樣更好?你只是用'$()'替換反引號。 – fedorqui

+0

@fedorqui - 替換反引號只是代碼改進,訣竅在於將代碼移動到單獨的腳本中並由cron執行(這是cron作業的理想語法) –

+0

然後,重點說明您的答案的這一方面。另外,我認爲它不會按原樣工作,您需要將shebang或在cronjob中指明二進制文件 – fedorqui