0

最近、crontab でいくつかの問題が発生しています。サーバーを切り替えた後、自分の cron ジョブがまったく実行されていないことに気付きました。PHP の情報を調べたところ、php は CGI で実行されていることがわかったので、に切り替える必要があることに気付きlynx -dump URL_HEREましたphp -q PATH_HERE

実際の PHP ファイルでは#!/usr/bin/php -q、php がサーバー上のどこにあるかを定義するようにじっと見つめました。ただし、実行されていません。何かが実行されたらメールを送信するように crontab を設定しました。メールがありません。ジャンク、ゴミ箱、スパムをチェックし、メールを切り替えてみました. 何もない。

ここに私が今持っているものがあります: * * * * * php -q /home/USER/public_html/file.php.

コマンドラインにコピーして貼り付けると、うまく機能します。crontab で実行すると、実行されません。

4

2 に答える 2

0

これをデバッグするためにいくつかのことを行うことができます。

1) crontab でエントリを次のように変更します。

* * * * * php -q /home/USER/public_html/file.php > /tmp/filecron 2>&1

次のように入力して、必ずエントリを編集してください。

crontab -e

次に実行します。

tail -f /tmp/filecron

実行時に出力をデバッグします。

2) sudo ユーザーまたは root として、cron ログを末尾に表示して、cron が適切に実行されていることを確認します。

sudo tail -f /var/log/cron

最初のステップでは、php ファイル自体に関連する情報 (構文エラーなど) が表示されます。2 番目のステップは、crontab 自体が正しく構成されていない場合に役立ちます。

このジョブを 5 分ごとに実行するつもりですか? これは、指定された行で行うことです。

于 2013-03-03T18:45:27.160 に答える
0

環境変数がありません。このような簡単なテストを試してください

これをcrontabに追加します

* * * * *  set > /tmp/vars

2 ~ 3 分待ってから、作成したばかりの crontab エントリを削除します。

次、

通常使用するシェルコマンドラインから

set > myvars
diff myvars /tmp/vars

これにより、環境の違いがわかります。cron ジョブ環境を変更します。必要なものを追加するだけです。

于 2013-03-03T18:48:06.697 に答える