【发布时间】:2010-11-18 22:44:54
【问题描述】:
这一直发生在我身上: 1)我写了一个脚本(ruby,shell等)。 2)运行它,它的工作原理。 3)把它放在 crontab 中,让它在几分钟内运行,所以我知道它从那里运行。 4)没有,没有错误痕迹,回到第2步或第3步1000次。
当我在 crontab 中的 ruby 脚本失败时,当我像这样通过管道输出时,我真的不知道为什么它会失败:
ruby script.rb >& /path/to/output
我得到了脚本的输出,但我没有得到任何错误,也没有得到来自 bash 的错误(比如找不到 ruby 或文件不存在)
我不知道设置了哪些环境变量以及是否有问题。事实证明,要从 crontab 运行 ruby 脚本,您必须导出大量环境变量。
我有没有办法让 crontab 像 我自己从终端运行它一样运行脚本?
调试时,我必须重置计时器并返回等待。非常耗时。
如何更好地测试 crontab 中的内容或避免这些问题?
【问题讨论】:
-
红宝石在哪里?是否在 /usr/bin 等系统路径中?看看:ubuntuforums.org/showthread.php?t=190671,看看有没有和你看到的类似的消息。这是 ruby 在 cron 可以看到的路径之外的情况。
-
我的 crontab 中作业的错误(实际上是任何输出)会通过电子邮件发送给我,即 crontab 的所有者。不记得我需要更改任何设置才能发生这种情况...您是否检查过运行 cronjob 的系统上是否有任何电子邮件?
-
如何将您的输出定向到系统日志? angryruby.blogspot.com/2007/08/ruby-and-syslog.html
-
请注意,">&" 不是 sh 语法(它是 csh)。您希望“ruby script.rb >/path/to/output 2>&1”将标准输出和标准错误重定向到该文件。或者,“ruby script.rb 2>&1 | mailx -s subject you@example.com”
标签: ruby bash unix scripting crontab