1分に1回以上実行されるように見えるcronジョブがあります。ここで私がどのようにそれを研究したのですか?PHP cronスクリプトが1分に1回だけ起動する
まず、/etc/cron.hourly、/etc/cron.dailyなどに追加のエントリがないことを確認しました。そこには何も珍しいものはありません。
次に、/ etc/crontabに追加エントリがないことを確認しました。そこには何もありません。
はその後、私はすべてのユーザー
for user in $(cut -f1 -d: /etc/passwd); do echo $user; crontab -u $user -l; done
のためのcrontabファイルを表示するには、このコマンドを実行しました...そこには何も、しかし、根は表示されませんでしたが、おそらくこれが最後に
期待されています、私はcrontab -l
を押すと、予想通り私が得るすべては一つのエントリだった:
* * * * * wget --no-check-certificate -q -O - https://...cron_custom_alerts.php
上記に基づいて、実際には1つのcronジョブしか構成されていないと仮定します。しかし、実行中のスクリプトにログを追加したため、1分に複数の実行が表示されていました。 cronが外部で実行されている場合に備えて、$ _SERVER ['PHP_SELF']と$ _SERVER ['REMOTE_ADDR]の両方を出力します。しかし、ログにはリモートIPが表示されず、複数回実行されていると思われるもの以外の手がかりはありません。
2012-05-02 21:57:01 - /cron_custom_alerts.php EXECUTED BY
2012-05-02 21:57:47 - /cron_custom_alerts.php EXECUTED BY
2012-05-02 21:57:53 - /cron_custom_alerts.php EXECUTED BY
2012-05-02 21:58:01 - /cron_custom_alerts.php EXECUTED BY
2012-05-02 21:58:48 - /cron_custom_alerts.php EXECUTED BY
2012-05-02 21:58:54 - /cron_custom_alerts.php EXECUTED BY
2012-05-02 21:59:01 - /cron_custom_alerts.php EXECUTED BY
2012-05-02 21:59:47 - /cron_custom_alerts.php EXECUTED BY
2012-05-02 21:59:53 - /cron_custom_alerts.php EXECUTED BY
2012-05-02 22:00:01 - /cron_custom_alerts.php EXECUTED BY
3つのバッチで実行されているようです。私がcrontabに入って1つのエントリをコメントアウトしたとき、それは2つにダウンしました!だから、明らかにこのスクリプトを呼び出す場所は2つありますが、それは可視ではありません。crontab -e
これ以上のログがあれば、私はそれを公開していますが、このスクリプトの実行を引き起こしているものを調査することができます。
ANSWER:アクセスログは、スクリプトが外部からアクセスされており、内部のcronジョブではなくアクセスされていることを示しています。他のサーバーは、htaccess denyによってcronの実行をブロックされました。
'strace'を' cron'デーモンに付けて、それを捕まえるようにしてください。 – sarnold
すべてのユーザのcrontabのリストを 'sudo'したのかrootとして実行しましたか?あなたがrootでない限り、他のユーザーのcrontabを見ることはできません。 PHPスクリプトは何をしていますか? PHPが複数回呼び出される関数にログを書き込むことはできますか? – JScoobyCed
スクリプトがウェブサーバー環境でhttp要求によって実行されるのは非常に奇妙ですが、$ _SERVER変数は空白です。実際...あなたはそれらのスペルを間違えた。 $ Sは$ Sではありませんが、私はあなたがそれらの値を見ることから多くを学ぶとは思いません。 – goat