2015年3月1日日曜日

cronでRubyから呼び出しているコマンドが実行できなくなった

cronに登録していたRubyスクリプトがうまく実行されなくなってことがあったので、メモ。

cronに登録したコマンドの実行に失敗した場合、実行ユーザー宛にメールが届く。
(定義ファイル自身に誤りがあれば、/var/log/cronに書かれる。)

メールの内容を見ると、以下のようになっていた。(一部省略)
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>

/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:60: command not found: pcsensor -c
'pcsensor'というコマンドをRubyから実行しているが、これが見つからないよう。
直接、Rubyスクリプトを実行したときには問題なく実行できるのに。。

PATHが/usr/bin, /bin しかないので、それ以外のパスに格納されたコマンドが実行されないと推測。
Rubyスクリプトの呼び出し方法を以下のように修正。

# result =  `pcsensor -c`
result =  `/usr/local/bin/pcsensor -c`

この後は問題なく上記スクリプトが正しく動作し、cronのエラーも表示されなくなった。

しかし、なぜ急に実行されなくなったか不明。なにかいじったかな。。

0 件のコメント:

コメントを投稿