我想创建一个 cron 作业来运行 ruby 脚本。这就是我放在 crontab 中的内容。
2 * * * * ruby /home/mark/project/script.rb >> /home/mark/cronOutput.txt
但它没有运行。我认为当 cron 以 root 身份运行时,环境加载存在一些问题。
请帮忙。
我想创建一个 cron 作业来运行 ruby 脚本。这就是我放在 crontab 中的内容。
2 * * * * ruby /home/mark/project/script.rb >> /home/mark/cronOutput.txt
但它没有运行。我认为当 cron 以 root 身份运行时,环境加载存在一些问题。
请帮忙。
如果您的 ruby 位于非标准路径中,那么我个人喜欢将我的 ruby 调用包装在 shell 脚本中,从而确保正确设置我的 ruby 程序所需的所有路径等,并在 crontab 中安排脚本。做类似的事情
2 * * * * /home/mark/project/ruby_wrapper_sh >> /home/mark/cronOutput.txt 2>&1
你的 /home/mark/project/ruby_wrapper_sh 应该是这样的
#!/bin/bash
. ~mark/.bash_profile
`ruby /home/mark/project/script.rb`
如果您使用的是 RVM,您可以简单地执行以下操作:
rvm cron setup
参考: https ://coderwall.com/p/vhv8aw/getting-ruby-scripts-working-with-bundler-rvm-and-cron
检查任何时候(https://github.com/javan/whenever)gem以在 Rails 中使用 cron 作业
在你的终端执行
# which ruby
找到你的红宝石路径
示例输出
/usr/bin/红宝石
然后您可以使用 crontab -e 编辑您的 cronjob
* * * * * /usr/bin/ruby /home/mark/project/script.rb
并保存,这只是在我的centos服务器上工作。您可以在编辑 cronjob 之前先使用此命令测试代码
#/usr/bin/ruby /home/mark/project/script.rb
它应该首先工作,然后你可以穿上你的 crontab
感谢@saihgala 的解决方案,但我对这种方式几乎没有修改。我将 #!/usr/bin/env ruby
sting 添加到我的 ruby 可执行文件的开头。
添加此文件的权限,启动 crontab 文件编辑crontab -e
。
添加*/1 * * * 0-5 /path/to/executable.rb>>/path/to/output.txt
然后它对我有用。