毎時のCronジョブは実行されませんが、手動では問題なく実行されます

毎時のCronジョブは実行されませんが、手動では問題なく実行されます

背景 - システムには2つの異なるバージョンの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 ジョブには最小限の環境設定があることに留意してください。対話型シェルで表示される設定はありません。cron は~/.login、、~/.bashrcなどを実行しません。

cron ジョブからのエラーを確認するには、STDOUT と STDERR をファイルにリダイレクトするのが最も便利だと思います。たとえば、> /tmp/cron.out 2>&1crontab エントリに追加します。そうしないと、システムが出力を crontab の所有者への電子メール メッセージにパッケージ化する可能性があります。

関連情報