Cron-Jobs haben eine Stunde Pause, da die Systemzeiten nicht übereinstimmen

9

Beispiel für ein Problem:

* 9 * * * echo 9
* 10 * * * echo 10

Das oben Gesagte löst jede Minute eine E-Mail an den Benutzer aus, aber alle "9" -Antworten erfolgen um 10:00 Uhr -> 10:59 Uhr, während die "10" um 11:00 Uhr -> 11:59 Uhr eingehen .

Einen Job von ausführen

* * * * * /bin/date ; /bin/date -u

Das erwartete (korrekte) Datum und die Uhrzeit wurden zurückgegeben. Dies galt sowohl für UTC als auch für die Ortszeit (Amerika / Denver). Wenn Sie diesen Job so ändern, dass er jede Minute zu einer bestimmten Stunde ausgeführt wird, wird der Offset angezeigt (Jobs, die mit 9 ausgeführt werden sollen, werden um 10 ausgeführt usw. usw.).

Aktuelles Debug, das ich abgeschlossen habe:

Okay, das ist seltsam. Vielleicht ist meine Zeitzonendatei irgendwie durcheinander? Lassen Sie uns das überprüfen

diff -s /etc/localtime /usr/share/zoneinfo/`cat /etc/timezone`
Files /etc/localtime and /usr/share/zoneinfo/America/Denver are identical

Ich habe die Hardware-Uhr überprüft, um festzustellen, ob diese deaktiviert ist oder nicht mit meinen lokalen Einstellungen übereinstimmt (als Root ausführen).

date ; hwclock
Wed Oct 26 10:50:13 MDT 2016
Wed 26 Oct 2016 10:50:14 AM MDT  -0.204171 seconds

Scheint eine Sekunde aus zu sein, aber das sollte nicht dazu führen, dass meine Cron-Jobs eine volle Stunde außerhalb des Zeitplans laufen, oder?

Ich bin mir auch über Folgendes sicher:

  • Hat sich meine Zeitzone kürzlich geändert? Nein
  • Haben Sie trotzdem versucht, die Zeitzone manuell zu korrigieren? Ja
  • Haben Sie cron nach dem Festlegen der Zeitzone zurückgesetzt? Ja
  • Habe ich sichergestellt, dass der Cron-Dienst neu gestartet wurde? Ja
  • Habe ich den Cron-Service neu gestartet? Ja
  • Sind Sie wirklich sicher, dass cron neu gestartet wurde? 100% sicher, dass Cron neu gestartet wurde

Andere potenziell relevante Informationen:

Debian ausführen.

cat /etc/debian_version
8.6

Aktueller Kernel

uname -a
Linux BigBox 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) x86_64 GNU/Linux

Aktualisiertes Debug:

Ran 'hwclock --systohc', keine merklichen Verhaltensänderungen. Führen Sie diesen Befehl aus, um zu überprüfen

date;hwclock
Wed Oct 26 12:39:09 MDT 2016
Wed 26 Oct 2016 12:39:11 PM MDT  -0.875328 seconds

Ich kann 'cat / etc / sysconfig / clock' nicht ausführen, da diese Datei nicht existiert. Das Ausführen eines Suchbefehls unter / etc / tree zum Suchen von 'clock' bestätigt, dass ich dort keine Datei mit diesem Namen habe.

Überprüft, ob irgendetwas, das mir bekannt ist, die Variable CRON_TZ gesetzt hat. Es wird weder auf Benutzerebene noch auf Roots-Ebene festgelegt. Wenn Cron sie wiedergibt, wird keine Ausgabe ausgegeben.

jmurrayufo
quelle
1
Ist die CRON_TZenv var irgendwo eingestellt?
Thrig
hwclock --systohcnur der Vollständigkeit halber versuchen und cat /etc/sysconfig/clockzur Frage hinzufügen ?
Steve
Fügte beide Vorschläge zu meinen Informationen hinzu, leider lieferte keiner viel Wert. CRON_TZ ist in keiner Umgebung festgelegt, die ich sehen kann. Die erneute Synchronisierung der Uhr ergab die gleichen Ergebnisse wie zuvor (trotzdem überprüft, ob sie sich geändert hat, aber nicht), und ich habe keine '/ etc / sysconfig / clock ' Datei.
jmurrayufo

Antworten:

1

Ein weiterer Ort, an dem Sie suchen müssen: das Start-beim-Start-Skript cronoder die Crontab-Datei des alten Schulsystems /etc/crontab. Es ist möglich, dass die TZ-Umgebungsvariable beispielsweise festgelegt wird, /etc/init.d/cronieoder /lib/systemd/system/crond.serviceich bin nicht sicher, was Debian für das Init-System verwendet.

Ich habe so etwas gesehen, als ich versuchte, crondalle zwei Stunden Dinge laufen zu lassen:

0 */2 * * * /opt/dbms/rainstor/archiving/ama_term

crondführte das Skript zu ungeraden Stunden aus. Ich vermutete, bewies mir aber nie, dass es mit einer Verwirrung der Sommerzeit zu tun hatte.

Bruce Ediger
quelle
/etc/init.d/cron greift nach der /etc/timezoneDatei. TZ = cat /etc/timezone. Diese Datei scheint korrekt zu sein (eine Prüfsumme wurde ausgeführt, um doppelt so sicher zu sein, dass sie mit der identischen identisch ist). /lib/systemd/system/crond.service scheint keine TZ-Variablen ändern zu wollen. Ich werde den * / 2-Vorschlag überprüfen, um festzustellen, ob ich dasselbe sehe.
jmurrayufo