Cron-Jobs werden mit einer Stunde Verspätung ausgeführt, was völlig im Widerspruch zu den Systemzeiten steht

Cron-Jobs werden mit einer Stunde Verspätung ausgeführt, was völlig im Widerspruch zu den Systemzeiten steht

Beispiel für ein Problem:

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

Das Obige sendet jede Minute eine E-Mail an den Benutzer, aber alle „9“-Antworten erfolgen um 10:00 Uhr -> 10:59 Uhr, während die „10“-Antworten um 11:00 Uhr -> 11:59 Uhr eingehen.

Ausführen eines Jobs von

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

Das erwartete (korrekte) Datum und die erwartete 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, ergibt sich der Versatz (Jobs, die um 9 Uhr ausgeführt werden sollen, werden um 10 Uhr ausgeführt usw. usw.).

Aktuelles Debugging, das ich abgeschlossen habe:

Okay, das ist seltsam. Vielleicht ist meine Zeitzonendatei irgendwie durcheinander? Lass 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 Hardwareuhr geprüft, um zu sehen, ob sie ausgeschaltet ist oder irgendwie 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

Es scheint eine Sekunde Abweichung zu geben, aber das sollte nicht dazu führen, dass meine Cron-Jobs eine ganze Stunde hinter dem Zeitplan zurückliegen, oder?

Außerdem bin ich mir über Folgendes sicher:

  • Hat sich meine Zeitzone kürzlich geändert?NEIN
  • Haben Sie trotzdem versucht, die Zeitzone manuell einzustellen?Ja
  • Haben Sie Cron zurückgesetzt, nachdem Sie die Zeitzone korrigiert hatten?Ja
  • Habe ich sichergestellt, dass der Cron-Dienst neu gestartet wurde?Ja
  • Habe ich den Cron-Dienst neu gestartet?Ja
  • Sind Sie wirklich sicher, dass Cron neu gestartet wurde?100% sicher, dass Cron neu gestartet wurde

Weitere möglicherweise relevante Informationen:

Debian wird ausgeführt.

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 Debugging:

Habe 'hwclock --systohc' ausgeführt, keine erkennbaren Änderungen am Verhalten. Habe diesen Befehl ausgeführt, 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. Wenn ich einen Suchbefehl unter dem /etc/-Baum ausführe, um „clock“ zu finden, bestätigt sich, dass ich dort keine Datei mit diesem Namen habe.

Habe nachgesehen, ob mir bekannt ist, dass die Variable CRON_TZ gesetzt wurde. Sie wird weder auf Benutzerebene noch auf Root-Ebene gesetzt. Wenn Cron sie ausgibt, wird keine Ausgabe ausgegeben.

Antwort1

Noch ein Ort, an dem Sie nachsehen können: die Start-at-Boot-Skripte für cronoder die Crontab-Datei des alten Schulsystems /etc/crontab. Es ist möglich, dass die Umgebungsvariable TZ beispielsweise in /etc/init.d/cronieoder festgelegt wird /lib/systemd/system/crond.service. Ich bin nicht sicher, was Debian für das Init-System verwendet.

Ich habe so etwas gesehen, als ich versucht habe, cronddie Dinge alle zwei Stunden laufen zu lassen:

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

crondhabe das Skript zu ungeraden Zeiten ausgeführt. Ich vermutete, dass es mit einer Verwechslung bei der Sommerzeit zu tun hatte, konnte es mir jedoch nie beweisen.

verwandte Informationen