2012-05-03 12 views
3

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の実行をブロックされました。

+1

'strace'を' cron'デーモンに付けて、それを捕まえるようにしてください。 – sarnold

+0

すべてのユーザのcrontabのリストを 'sudo'したのかrootとして実行しましたか?あなたがrootでない限り、他のユーザーのcrontabを見ることはできません。 PHPスクリプトは何をしていますか? PHPが複数回呼び出される関数にログを書き込むことはできますか? – JScoobyCed

+0

スクリプトがウェブサーバー環境でhttp要求によって実行されるのは非常に奇妙ですが、$ _SERVER変数は空白です。実際...あなたはそれらのスペルを間違えた。 $ Sは$ Sではありませんが、私はあなたがそれらの値を見ることから多くを学ぶとは思いません。 – goat

答えて

0

通常、cronはよく書かれたソフトウェアであり、そのような難解なことはしません。そうであれば、あなたはそれを経験した唯一の人ではありません。少なくともルートとしては、システム上のすべてのcrontabエントリを見ることができます。

cronjobを無効にし、まだ実行されているかどうかを確認します。はいの場合は、WebサーバーのアクセスログでこれらのHTTP要求のソースを追跡します(特に毎分に発生するため)。これらの要求をブロックする。

関連する問題