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

Cron is running in home directory instead of file directory

我关注了 Whosebug 中的其他一些帖子,并使用 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 目录中是 运行。

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

根据在评论中留下答案的@Pawel Dawczak。

解决方法是将crontab中的语句改写为

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

谢谢!

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

考虑将您的 crontab 更改为:

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

祝你好运!