每小時 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

它按預期工作,甚至按設計向我發送了一封電子郵件

當我檢查系統日誌時,我看不到太多。我看到它正在執行但沒有顯示錯誤..

 # 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 的擁有者。

相關內容