2017-04-12 76 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