我想创建一个运行ruby脚本的cron作业。这就是我放在crontab中的内容。
2 * * * * ruby /home/mark/project/script.rb >> /home/mark/cronOutput.txt
但它没有运行。我认为当cron以root身份运行时,环境会出现问题。
请帮忙。
答案 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)
在您的终端执行
# 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