背景 - 系统安装了两个不同版本的 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 的所有者。