16

我想创建一个 cron 作业来运行 ruby​​ 脚本。这就是我放在 crontab 中的内容。

2 * * * * ruby /home/mark/project/script.rb >> /home/mark/cronOutput.txt

但它没有运行。我认为当 cron 以 root 身份运行时,环境加载存在一些问题。

请帮忙。

4

5 回答 5

15

如果您的 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`
于 2012-08-22T05:17:42.050 回答
7

如果您使用的是 RVM,您可以简单地执行以下操作:

rvm cron setup 

参考: https ://coderwall.com/p/vhv8aw/getting-ruby-scripts-working-with-bundler-rvm-and-cron

于 2015-01-15T15:40:03.443 回答
3

检查任何时候(https://github.com/javan/whenever)gem以在 Rails 中使用 cron 作业

于 2012-08-22T05:14:15.177 回答
2

在centos上工作

在你的终端执行 # 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

于 2018-02-28T03:17:14.820 回答
1

感谢@saihgala 的解决方案,但我对这种方式几乎没有修改。我将 #!/usr/bin/env rubysting 添加到我的 ruby​​ 可执行文件的开头。

添加此文件的权限,启动 crontab 文件编辑crontab -e

添加*/1 * * * 0-5 /path/to/executable.rb>>/path/to/output.txt然后它对我有用。

于 2020-01-28T12:54:23.873 回答