次のコマンドを使用してcrontab.customファイルを作成しました。
*/1 * * * * /home/username/data/www/run.sh
以下run.sh
を含みます。
php script.php
その後、このコマンドを実行しますcrontab crontab.custom
。
今crontab -l
私の使命に戻りましょう。
cronを再起動しましたが呼び出されませんでした/etc/rc.d/cron restart
。script.php
動作させるにはどうすればよいですか?
答え1
これは、設定が構成されていないためです$PATH
。php
シェルで実行しようとすると、実際に実行可能ファイルを探すディレクトリのリストである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
以下はいくつかのトラブルシューティングのヒントです。
- 直接
/home/username/data/www/run.sh
コマンドラインに入力して動作することを確認してください。 - スクリプトで、すべてのパスが明示的にフルパスに設定されていることを確認してください。
- データが正しい場所に追加されていることを確認してください。
crontab -e
crontabファイルを編集できます。 - cronを使用する権限があることを確認してください。ユーザー名は
/var/cron/allow
ファイルではなく/var/cron/deny
ファイルになければなりません。 - /var/log/cronの出力を確認してください。