web-dev-qa-db-ja.com

このcronジョブが機能しないのはなぜですか?

~/custom_scripts/get_all_products.rbにRubyスクリプトがあります。

毎晩04:00に実行してほしい。

crontab -eのc​​ronジョブは次のようになります。

MAILTO="<email>"
0 4 * * * Ruby ~/custom_scripts/get_all_products.rb

しかし、それは実行されていません。

次に何を試すべきですか?

2
narzero

過去にcrontabでチルダ拡張を使用する際に問題が発生しました(これはLinux以外のUnixフレーバーであった可能性があります)。それでも、$HOMEの代わりに~を使用することをお勧めします。

また、Ruby実行可能ファイルへのフルパスを指定することをお勧めします。 cronで使用されるPATHは、多くの場合、インタラクティブ環境で設定したものではありません(たとえば、私のシステムでは、cron PATHは単に/usr/bin:/binです)。

3
jjlin

解決する必要のある問題が2つあると思います。

  1. 〜は$HOMEのシェル同義語です。 cronのようなものでそれを使用する必要があります
  2. $HOMEがコマンドに対して正しく設定されていない可能性があります。 crontab -eは、デフォルトでrootのcrontabを編集しています。あなたのユーザーの一人ではありません。 〜と$HOMEだけを絶対パスに置き換えます。
2
frlan