Warum wird dieser cron-Eintrag zweimal ausgeführt?
-
05-07-2019 - |
Frage
*/5 * * * * my command
Dieser Eintrag funktioniert, aber alle 5 Minuten zweimal ausgeführt wird, warum?
In /var/log/cron
es zeigt:
Jun 16 22:20:01 Test CROND[12512]: (root) CMD (my command)
Jun 16 22:20:01 Test CROND[12516]: (root) CMD (my command)
So ist es nicht von zwei Benutzern ist.
Es wird nur einmal mit crontab -e -u root
eingetragen. Der Befehl ist ein PHP-Befehl.
Lösung
Nichts in der Beschreibung gibt Grund dafür zweimal ausgeführt werden. Schauen Sie sich woanders.
- Sie zwei Benutzer nennen es?
- Ist es trat zweimal?
- Ist es selbst nennen?
- Ist es in Bewegung Bedingungen für die Wiederholung?
Wenn es ein Shell-Skript ist Sie ausführen, haben es whoami
und date
in eine Protokolldatei anhängen. Sie sollten den Grund graben können.
UPDATE
Geben Sie ps -A, stellen Sie sicher, crond nicht zweimal ausgeführt wird.
Andere Tipps
Die wget in crontab haben oft eine Grenze von 15 Minuten. In unserem Fall war dies nur der Fall, und nach diesen 15 Minuten wird der Job endet mit einem Timeout und dann wieder läuft sofort wieder. So war die Lösung dieses Problems die cronjob in crontab einzurichten etwas wie folgt aus:
1 2 * * * root wget --read-timeout=3600 -O - 'http://cron-job-url' >/dev/null 2>&1
... statt
1 2 * * * root wget -O - 'http://cron-job-url' >/dev/null 2>&1
Also, wget ist die Sache. Bedeutung 3600 = 1 Stunde dann. Oder mehr, wenn Sie brauchen!
Wenn es ein Befehl für eine Anwendung ist Sie installiert, vielleicht hinzugefügt es bereits den gleichen Eintrag oder /etc/crontab
/etc/cron.d/<something>
.
Ich bestätige - mein Cron auch zweimal laufen ...
Jul 24 14:40:01 localhost cron[2713]: (root) CMD (/etc/apache2/generator/reloader.do)
Jul 24 14:41:01 localhost cron[9481]: (root) CMD (/etc/apache2/generator/reloader.do)
Jul 24 14:41:01 localhost cron[10724]: (root) CMD (/etc/apache2/generator/reloader.do)
Jul 24 14:42:01 localhost cron[20380]: (root) CMD (/etc/apache2/generator/reloader.do)
Jul 24 14:42:01 localhost cron[20832]: (root) CMD (/etc/apache2/generator/reloader.do)
Meine crontab
grep -R / var / spool / -e reloader
/var/spool/cron/crontabs/root:* * * * * /etc/apache2/generator/reloader.do
Ausgang:
whoami
date
------
Ausgabe:
root
root
Tue Jul 24 14:46:02 CEST 2012
---------
Tue Jul 24 14:46:03 CEST 2012
---------
Meine aktuelle Problemumgehung ist:
if [ -f /etc/apache2/generator/reloader.lock ]
then
exit
fi
touch /etc/apache2/generator/reloader.lock
/etc/apache2/generator/reloader
rm /etc/apache2/generator/reloader.lock
Aber es ist nicht die Antwort, warum das passieren ...
System - gentoo Cron - vixie-cron
Teil ps aux wwf
Ausgang (innen Crontask zu Mittag gegessen)
root 10843 0.0 0.0 16480 560 ? Ss Jun06 0:01 /usr/sbin/cron
root 29797 0.0 0.0 25020 964 ? S 15:08 0:00 \_ /usr/sbin/cron
root 29799 0.0 0.0 9188 1228 ? Ss 15:08 0:00 \_ /bin/bash /etc/apache2/generator/reloader
root 29822 0.0 0.0 14800 988 ? R 15:08 0:00 \_ ps aux wwf
------
root 8215 0.0 0.0 16480 836 ? Ss 14:23 0:00 /usr/sbin/cron
root 31419 0.0 0.0 25020 968 ? S 15:08 0:00 \_ /usr/sbin/cron
root 31423 0.0 0.0 9188 1228 ? Ss 15:08 0:00 \_ /bin/bash /etc/apache2/generator/reloader
root 31431 0.0 0.0 14804 1004 ? R 15:08 0:00 \_ ps aux wwf
EDIT:
Ich habe bemerkt, dass ein von cron Prozess Bericht Jun06 als Startdatum (heute ist Jun24)
root 10843 0.0 0.0 16480 560 ? Ss Jun06 0:01 /usr/sbin/cron
root 8215 0.0 0.0 16480 836 ? Ss 14:23 0:00 /usr/sbin/cron
Zweiter Prozess Bericht korrekt (Server Uprime- ist ~ 40 Minuten - ich es recenty neu gestartet haben) Eine wichtige Informationen - es ist V-Server auf dem Host-Computer ausgeführt
.Egal, was ich (/etc/init.d/vixie-cron neu starten) seinen Anfang mit der gleichen PID
GELÖST:
Ich habe den Grund gefunden. Ein V-Server wurde zweimal durchgeführt, mit anderem Kontext. Mögliche Erklärung - jemand hat den Kontext geändert, während Maschine lief, und als Ergebnis wurden nicht alle Prozesse getötet, und was, mehr s - sie neue Instanz von vserver (Kontext 303 und 3031) haben keinen Einfluss auf:
root 10843 3031 developer 0.0 0.0 16480 560 ? Ss Jun06 0:01 /usr/sbin/cron
root 16509 303 developer 0.0 0.0 16480 836 ? Ss 15:18 0:00 /usr/sbin/cron
Ich habe TERM alten Prozess, und Problem gelöst ist.
Für Sie sicher, es ist nicht der crontab-Eintrag, der es verursacht zweimal laufen. Der schnellste Weg, um herauszufinden, was los ist, ist einige Debug auf den Cron-Job-Skript hinzuzufügen. Wenn Sie nichts tun, dann standardmäßig wird der cron Ausgabe an root@localhost
per Post (es sei denn, Sie konfiguriert haben, dies anders zu sein), so vorausgesetzt, Sie Root-Zugriff haben, fügen Sie einige Debug-Informationen an das Skript, wie zum Beispiel:
echo "Script starting"
date
whoami
und Blick auf den Ausgang. Dadurch werden Sie als zu herauszufinden, erhalten begonnen, wie dies zweimal genannt zu werden.
Ich hatte das gleiche Problem einmal, in meinem Fall war, dass ich den Cron-Dienst versehentlich zweimal initialisieren. Nachdem ich cron # /etc/init.d/crond stop
gestoppt und begann es wieder # /etc/init.d/crond start
, es funktionierte perfekt.
Ich hoffe, das jemand helfen kann.
Es sieht aus wie Sie zwei crond laufende haben, eine mit PID 12512 und einem mit PID 12516.
Ich verwende OpenWrt.
Ich habe das gleiche Problem, aber ich habe nur einen cron: ps | grep crond:
31447 root 1508 S /usr/sbin/crond -c /etc/crontabs -l 8
31454 root 1500 S sh -c ps | grep crond
31456 root 1496 S grep crond
logread | grep cron
May 27 13:15:01 decibox cron.info crond[31447]: crond: USER root pid 1594 cmd /root/check_connect.php.sh
May 27 13:20:01 decibox cron.info crond[31447]: crond: USER root pid 2103 cmd /root/check_connect.php.sh
May 27 13:20:01 decibox cron.info crond[31447]: crond: USER root pid 2325 cmd /root/check_connect.php.sh
May 27 13:25:01 decibox cron.info crond[31447]: crond: USER root pid 2880 cmd /root/check_connect.php.sh
Ich hatte das gleiche Problem aufgrund eines doppelten Eintrag in conf-Datei:
# grep /syslog /etc/rsyslog.conf /etc/rsyslog.d/50-default.conf
/etc/rsyslog.conf:*.*;auth,authpriv,kern,mail.none -/var/log/syslog
/etc/rsyslog.d/50-default.conf:*.*;auth,authpriv,kern,mail.none -/var/log/syslog
Klar Kommentierung eines der 2 löst das Problem