Cron在主目录而不是文件目录中运行

时间:2015-03-30 08:09:45

标签: ruby cron rvm

我在stackoverflow中跟踪了一些其他帖子,并使用rvm cron setup成功地使用RVM设置了cron,并将一些ENV注入到crontab文件中。

当我在解决为什么dotenv gem不起作用时,我意识到以下内容:

我将test.rb放在文件路径/home/myuser/ruby/test.rb中并拥有我的crontab文件,如下所示:

* * * * * ruby /home/myuser/ruby/test.rb >> /home/myuser/ruby/output.log

当我将test.rb的输出与Dir.pwd放在一起时。输出表明rb在/home/myuser/目录而不是/home/myuser/ruby目录中运行。

虽然我通过手动更改路径来修补此修补程序。但我想知道为什么会这样。

2 个答案:

答案 0 :(得分:5)

默认情况下,用户的cron任务是从用户的主目录执行的。为了从正确的目录执行脚本,你必须" cd"它。

考虑将您的crontab更改为:

* * * * * cd /home/myuser/ruby && ruby ./test.rb >> /home/myuser/ruby/output.log
祝你好运!

答案 1 :(得分:0)

@Pawel Dawczak在评论中留下了答案。

解决方案是将crontab中的语句重写为

* * * * * cd /home/myuser/ruby && ruby test.rb >> /home/myuser/ruby/output.log

谢谢!