【问题标题】:Crontab with Ruby script returning error code 1带有 Ruby 脚本的 Crontab 返回错误代码 1
【发布时间】:2012-04-06 10:14:20
【问题描述】:

我正在用 Ruby 重写一些 shell 脚本,这些脚本将用于备份我们网站上的特定内容。我正在运行 Ruby 1.8.7 并让脚本以 root 身份在本地运行,它运行良好。

我刚刚尝试将脚本添加到 Ubuntu 11.10 上的 cronttab。

*/5 * * * * ruby /root/code/backup_images.rb local

当 cron 运行时,我在 syslog 中收到以下错误:

Mar 21 16:15:01 ubuntu CRON[4942]: (root) CMD (ruby /root/code/backup_images.rb local)
Mar 21 16:15:02 ubuntu CRON[4941]: (CRON) error (grandchild #4942 failed with exit status 1)

我尝试了以下解决方案,但无济于事:

env -i $SHELL --norc

这应该会创建一个新的裸壳来模仿 crontab 运行的内容,这适用于我的脚本。

#!/usr/bin/env ruby

我已将该声明添加到我的脚本顶部,它在手动运行时没有改变功能,也没有解决 crontab 的问题。

我什至尝试将调用的结果输出到一个文件,但这只会创建一个没有任何内容的新文件。

我不确定还有什么问题,但我假设它必须是 Cron 无法找到 Ruby 或类似性质的东西。我对此很陌生,所以我在这里走到了死胡同。

提前致谢!

【问题讨论】:

    标签: ruby crontab ubuntu-11.10


    【解决方案1】:

    我认为问题在于您需要在 crontab 中应用 ruby​​ 的路径

    但我个人更喜欢只为要执行的 ruby​​ 文件设置路径。

    */5 * * * * /root/code/backup_images.rb local
    

    然后追加

    #!/usr/bin/env ruby  
    

    backup_images.rb的顶部

    您还需要使 ruby​​ 文件可执行 chmod +x

    【讨论】:

    • 好吧,我没有执行权限,我的路径在文件中不正确。当前呼叫现在是*/5 * * * * /root/code/backup_images.rb local,响应相同。以状态 1 退出
    【解决方案2】:

    因此,在@tomodachi 的帮助下,我更进一步,明确写出了以下 crontab 行,它现在可以工作了。

    */15 * * * * cd /root/code/ && ./backup_images.rb local > /root/code/log/script.log
    

    所以基本上我尝试从 bash shell 执行命令,但没有找到脚本。所以我明确地进入直接然后执行备份脚本。

    从现在开始一切正常。

    感谢您的帮助。

    【讨论】:

      猜你喜欢
      • 2020-11-19
      • 2020-11-29
      • 2016-04-20
      • 2013-01-08
      • 1970-01-01
      • 2016-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多