每小时 Cron 作业不会运行,但可以手动运行

每小时 Cron 作业不会运行,但可以手动运行

背景 - 系统安装了两个不同版本的 ruby​​。我需要使用最新版本来运行我创建的这个监控脚本

这是我的 crontab 行:

0 * * * * /usr/local/rvm/rubies/ruby-2.2.1/bin/ruby /home/nexpose/ruby/console_monitor.rb

当我运行这个时:

/usr/local/rvm/rubies/ruby-2.2.1/bin/ruby /home/nexpose/ruby/console_monitor.rb

它按预期工作,甚至按设计向我发送电子邮件

当我检查 syslog 时,我没有看到太多内容。我看到它正在执行,但没有显示任何错误。

 # which ruby
 /usr/local/rvm/rubies/ruby-2.2.1/bin/ruby
 # ruby -v
 ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]

这与我的 PATH 配置有关吗?我以为我通过直接指向 ruby​​ 二进制文件来绕过这个问题?

答案1

请记住,cron 作业具有最低限度的环境设置。它们没有您在交互式 shell 中看到的设置。cron 不会执行~/.login~/.bashrc等。

要查看 cron 作业的错误,我发现将 STDOUT 和 STDERR 重定向到文件是最方便的。例如,附加> /tmp/cron.out 2>&1到 crontab 条目。否则,您的系统可能会将输出打包成电子邮件消息发送给 crontab 的所有者。

相关内容