如何创建一个运行ruby脚本的cron作业?

时间:2012-08-22 04:54:31

标签: ruby-on-rails ruby crontab

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

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

但它没有运行。我认为当cron以root身份运行时,环境会出现问题。

请帮忙。

5 个答案:

答案 0 :(得分:9)

如果你的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`

答案 1 :(得分:4)

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

rvm cron setup 

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

答案 2 :(得分:3)

检查每当(https://github.com/javan/whenever)gem在Rails中使用cron作业

答案 3 :(得分:1)

感谢@saihgala的解决方案,但我对此的修改很少。 我在红宝石可执行文件的开头添加了#!/usr/bin/env ruby字符串。

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

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

答案 4 :(得分:0)

在centos上工作

在您的终端执行 # which ruby 找到你的红宝石路径

示例输出

/ usr / bin / ruby​​

然后你可以使用crontab -e

编辑你的cronjob

* * * * * /usr/bin/ruby /home/mark/project/script.rb

并保存,这只是在我的centos服务器上工作。 在编辑cronjob之前,您可以先使用此命令测试代码

#/usr/bin/ruby /home/mark/project/script.rb

它应该先工作,然后你可以穿上你的crontab