CronJob startet zu oft

Wronnay

New Member
Hallo,

ich habe folgendes Problem: Ein Cron Job, der bisher nur ein Mal gestartet wurde, wird jetzt von meinem System öfters (2 - 4 Mal) ausgeführt - es wurde nichts an der Zeile geändert und ein Reboot hat auch nichts gebracht.

Hier die Zeile:
Code:
58 * * * * php /var/www/test.php

Hat jemand eine Idee, woran das liegen könnte bzw. wie man das lösen könnte?
 

djrick

Registered User
Kannst du bitte den Zeitraum genau definieren?

"wurde nur einmal gestartet" = Einmal pro: Tag, Stunde, Reboot, Jahr, Monat...?

"2 bis 4 mal" = Pro: Tag, Stunde, Jahr....?

Hast du mal im Syslog nachgesehen, was in den Protokollen steht, kann es sein, dass das Script noch von wo anders aufgerufen wird: Weiterer Cronjob, Manuel, über Web?
 

Wronnay

New Member
"wurde nur einmal gestartet" = Einmal pro: Tag, Stunde, Reboot, Jahr, Monat...?
Einmal - immer jede Stunde, in der 58. Minute, so wie es ja auch im Crontab steht
"2 bis 4 mal" = Pro: Tag, Stunde, Jahr....?
Das ist das Verwirrende: mein Debian startet den Cronjob jetzt, wann er will - mal in der 30. Minute, dann gleich noch mal in der 31. Minute oder gar in der 5. Minute - auch in der 58. Minute, aber eigentlich soll er den Cronjob ja nur in der 58. Minute starten und sonst gar nicht - ich habe auch schon Probleme mit dem RAM-Verbrauch - der wird immer größer ...
[...] kann es sein, dass das Script noch von wo anders aufgerufen wird: Weiterer Cronjob, Manuel, über Web?
Ja, über Web war das Script erreichbar - ich habe jetzt mal das Verzeichnis, in dem das Script liegt, vor Fremden gesperrt und schaue Mal, ob das etwas bringt.
 

djrick

Registered User
Ja, über Web war das Script erreichbar - ich habe jetzt mal das Verzeichnis, in dem das Script liegt, vor Fremden gesperrt und schaue Mal, ob das etwas bringt.
Gut. Ich denke du solltest erstmal ausschließen dass es von anderen Stellen aus aufgerufen werden kann.
Vielleicht schaust du auch mal in den Syslog rein und guckst dir die Aufrufe des Scripts an. Wenn es von Cronjob aufgerufen wird, dann siehst du als Dienst in der jeweiligen Zeile auch "CRON" stehen. Wenn das nicht dort steht oder gar nicht dort aufgeführt wird, dann ist der Fehler nicht bei Cron zu suchen.

Es besteht natürlich auch die minimale Möglichkeit dass etwas mit der Uhrzeit des Servers nicht stimmt und er deswegen "springt" aber das ist doch eher unwahrscheinlich.

Letztlich vielleicht mal im Apache Zugriffslog gucken, ob das Script dort aufgerufen wird.
 

Wronnay

New Member
Gut. Ich denke du solltest erstmal ausschließen dass es von anderen Stellen aus aufgerufen werden kann.
Habe ich jetzt sichergestellt, aber das Problem besteht immer noch.
Vielleicht schaust du auch mal in den Syslog rein und guckst dir die Aufrufe des Scripts an.
Das Script steht da drin, es wird aufgerufen, aber es stehen keine Fehler im Log.
Letztlich vielleicht mal im Apache Zugriffslog gucken, ob das Script dort aufgerufen wird.
Nein, da wird es nicht aufgerufen ...
Es besteht natürlich auch die minimale Möglichkeit dass etwas mit der Uhrzeit des Servers (...)
Wenn ich "date" ausführe, wird die richtige Uhrzeit und angezeigt.
 

Wronnay

New Member
Poste bitte mal aus dem Syslog die jeweiligen Zeilen, damit meine ich nicht die xx:58 Uhr Zeilen, sondern die restlichen.
Die?
Code:
Oct  6 04:00:01 vs*** /USR/SBIN/CRON[10702]: (root) CMD (php /var/www/test.php)
Andere stehen zu dem Cron nicht drin ... (Nur eben mit verschiedenen Zeiten)
 

djrick

Registered User
Dann muss es:
a.) ein anderer Job sein der das aufruft
b.) kann es sein dass das Script "lange" läuft?
 

Wronnay

New Member
Dann muss es:
b.) kann es sein dass das Script "lange" läuft?
Kann sein, aber es wird ja angezeigt, dass der Cronjob z.B.: um 14:05 gestartet wurde - das würde ja nicht angezeigt werden, wenn das Script noch von 13:58 ist ...
 

PHP-Friends

Blog Benutzer
verifizierter Anbieter
Forkt sich das Script vielleicht selbst?

Ansonsten kannst du dir aus meiner bescheidenen Sicht sehr sicher sein, dass cron das Script nicht öfter aufruft, als es soll. Du könntest natürlich einmal einen Systemuser anlegen, der als einziger Rechte zur Ausführung dieses Scripts hat und diesen entsprechend im Cron hinterlegen. Wenn es dann weiterhin zu Aufrufen kommt, muss root es ausführen.
 

Wronnay

New Member
Thema hat sich erledigt, der Cron ist öfters länger gelaufen, es wurde aber die falsche Zeit angezeigt (es wurde angezeigt, dass das Script z.B.: seit 15 Minuten läuft, obwohl es seit 30 Minuten läuft, da sleep(); verwendet wurde ...)
 
Top