カスタムcrontabが機能しない(FreeBSD)

カスタムcrontabが機能しない(FreeBSD)

次のコマンドを使用してcrontab.customファイルを作成しました。

*/1 * * * * /home/username/data/www/run.sh  

以下run.shを含みます。

php script.php  

その後、このコマンドを実行しますcrontab crontab.custom

crontab -l私の使命に戻りましょう。

cronを再起動しましたが呼び出されませんでした/etc/rc.d/cron restartscript.php動作させるにはどうすればよいですか?

答え1

これは、設定が構成されていないためです$PATHphpシェルで実行しようとすると、実際に実行可能ファイルを探すディレクトリのリストであるphp絶対ターゲットが見つかります。$PATHこれはあなたの環境で設定されていますが、cronはその環境を共有しません(実際には1つが空であるか設定されていない可能性があります$PATH)。いくつかのソリューションがあります(最高から最悪まで)。

  • $PATH上部に次の内容を追加してcrontabを設定します。
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  • スクリプトで実行可能ファイルのフルパスを使用しますphp(これはお勧めできません。ユーザーは、必要に応じて他のバイナリを使用するために環境でPATHをオーバーライドできる必要があります)。

  • $PATHスクリプトで明示的に設定します(同じ理由で悪い)。

答え2

以下のように、シェルスクリプトの上部に次の行を追加します。

#!/bin/bash

PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
export PATH

次に、cronジョブを使用します。

crontab -e

答え3

crontabファイルの問題は、cronで実行するときに他の環境に関連することがよくあります。まだファイルを提供していないので、run.sh以下はいくつかのトラブルシューティングのヒントです。

  1. 直接/home/username/data/www/run.shコマンドラインに入力して動作することを確認してください。
  2. スクリプトで、すべてのパスが明示的にフルパスに設定されていることを確認してください。
  3. データが正しい場所に追加されていることを確認してください。crontab -ecrontabファイルを編集できます。
  4. cronを使用する権限があることを確認してください。ユーザー名は/var/cron/allowファイルではなく/var/cron/denyファイルになければなりません。
  5. /var/log/cronの出力を確認してください。

関連情報