
背景 - 系統安裝了兩個不同版本的 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
它按預期工作,甚至按設計向我發送了一封電子郵件
當我檢查系統日誌時,我看不到太多。我看到它正在執行但沒有顯示錯誤..
# 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 的擁有者。