Cronジョブが期待どおりに機能しません。

Cronジョブが期待どおりに機能しません。

単純なRubyスクリプトを1分、5分、1時間ごとに定期的に実行するために3つのcrontabジョブを設定しました。彼らは処刑をしますが、何もしません。私のコンピュータには1人のユーザー(root)だけがあり、コマンドを実行してcrontabを設定しましたcrontab -ecrontab -l現在のcrontabジョブを一覧表示します。

5 * * * * ruby /root/www/server-monitoring/current/tasks/cpu_check.rb
0 * * * * ruby /root/www/server-monitoring/current/tasks/free_disk_space.rb
1 * * * * ruby /root/www/server-monitoring/current/tasks/free_ram_check.rb

実行されていることがわかりますが、正しい間隔で実行されず、何もしません。一方、これらのRubyファイルを手動で実行すると正常に動作します。 Rubyプログラムが100%動作しているか、テストに合格しているかなどを確認できます。以下はcrontabログです。

Dec  6 15:45:01 monitoring-jedrzej CRON[28281]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Dec  6 15:55:01 monitoring-jedrzej CRON[28478]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Dec  6 16:00:01 monitoring-jedrzej CRON[28584]: (root) CMD (ruby /root/www/server-monitoring/current/tasks/free_disk_space.rb)
Dec  6 16:01:01 monitoring-jedrzej CRON[28614]: (root) CMD (ruby /root/www/server-monitoring/current/tasks/free_ram_check.rb)
Dec  6 16:05:01 monitoring-jedrzej CRON[28702]: (root) CMD (ruby /root/www/server-monitoring/current/tasks/cpu_check.rb)
Dec  6 16:05:01 monitoring-jedrzej CRON[28703]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Dec  6 16:15:01 monitoring-jedrzej CRON[29214]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)

私がここで何を見逃しているのでしょうか?

ベストアンサー1

一般的に言えば、これが環境問題であることがわかります。 cronでスクリプトを実行すると、/etc/profileスクリプトは実行されません。/etc/profileスクリプトの先頭からソースコードを取得したり、スクリプトに必要な変数を設定したりできます(PATHこれは私がすぐに考えたものです)。

envcronで何かを実行するときに環境が正確にチェックされるように、コマンドを実行する小さなスクリプトを作成してファイルに接続することをお勧めします。設定する必要がありますが、そうでない項目を見つけるのに役立ちます。

おすすめ記事