ruby - 从 cron 执行 ruby​​ 脚本

标签 ruby cron rvm tiny-tds

我的脚本使用了 mysql、tiny_tds、fileutils 和 net/ftp。在 ruby 1.9.3 上运行。当我从文件夹中运行它时,它工作得很好。

但是,当我将它添加到 cron 选项卡时,tiny_tds 总是失败。我不知道是否有任何其他 gem 失败,因为我无法通过此错误:

require': no such file to load -- tiny_tds (LoadError)

我尝试从 crontab 将使用的同一个 shell 执行它,但我得到了那个错误。

整个脚本只有 1 个文件。

我是 ruby​​ 的新手,所以我的知识有限,无法以正确的方式设置环境。

在文件的头部

    #!/usr/bin/ruby
    require "mysql"
    require "fileutils";
    require "tiny_tds"  
    require "net/ftp"

简而言之,我从 mysql 获取作业列表,将其与 MsSQL、FTP 文件进行比较,并在作业完成后再次更新 mysql。

我需要从 cron 运行它。

经过一番研究,我尝试将 gem 设置为全局,但是,我认为这可能行不通。

在此先感谢您的帮助!

最佳答案

这是因为当 crond 执行您的代码时,您在命令行上的环境变量没有设置。通常的嫌疑人是 PATHLD_LIBRARY_PATH 和登录时设置的别名。

您可以看到 crond 做了什么:使用 crontab -e

* * * * *  set > /tmp/setvals

创建以上条目。让它运行一段时间。返回 crontab -e 并删除该新条目。

/tmp/setvals 中的内容与在命令行上发出 set 命令时 shell 为您提供的内容进行比较。然后,您可以采取措施为您的 cron 作业环境修改内容。

关于ruby - 从 cron 执行 ruby​​ 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15236278/

相关文章:

ruby - OSX Lion 新的 bash session rvm 默认 ruby​​ 未使用

ruby - 使用 rvm 在没有 pthread 的情况下安装 ruby

ruby-on-rails - 使用 Rails 和 Postgresql 在 jsonb 字段中存储数组数据

ruby-on-rails - 从 YAML 加载 ActiveRecord 对象时出现反序列化错误

Linux crontab 重定向日志

ruby-on-rails - 运行 autoconf 时 rvm install 1.9.2 失败?

arrays - 对数组中输入的数字进行排序 - Ruby - 不使用 'sort'

ruby - 如何实现! ruby 中的样式方法

linux - 如何测试 cron 作业?

Python 脚本手动运行良好,但在使用 Cronjob 运行时出错