Ausführen von Cronjobs nach Ortszeit und nicht nach Weltzeit

7

Beim Laufen

dpkg-reconfigure tzdata

Im Terminal und ich bekomme 2 verschiedene Zeiten auf meinem Rechner

Local time is now:      Wed May  1 11:58:55 IST 2013.
Universal Time is now:  Wed May  1 06:28:55 UTC 2013.

Das Problem ist, dass ich meine Cronjobs gemäß der Ortszeit in IST ausführen möchte, aber sie werden gemäß der Weltzeit UTC ausgeführt. Wo muss ich die notwendigen Änderungen vornehmen, um das gewünschte Verhalten zu erreichen?


quelle

Antworten:

8

Cron wird in der Ortszeit ausgeführt. Auf einigen Systemen können Sie jedoch eine TZ = -Zeile verwenden, um bestimmte Zeilen in verschiedenen Zeitzonen auszuführen. Andere Systeme unterstützen dies nicht. Wenn Sie eine haben TZ=UTC oder TZ=GMT Zeile, kommentieren Sie das aus. Wenn nicht, versuchen Sie es mit Hinzufügen TZ=IST in einer eigenen Zeile vor Ihrem ersten Eintrag. Verwenden man crontab sollte die TZ = -Zeile dokumentieren, wenn Ihr System dies unterstützt. Achten Sie auf Probleme mit der Sommerzeit, wenn Sie die Zeitzone angeben.

Wenn cron wirklich in UTC ausgeführt wird, gibt es verschiedene Möglichkeiten, einschließlich der Möglichkeit, dass Ihr System in UTC ausgeführt wird oder dass cron irgendwie mit der auf UTC festgelegten TZ-Umgebungsvariablen gestartet wurde. Art

date

um zu sehen, wie viel Uhr Ihr System hält. Stellen Sie sicher, dass die TZ - Variable in Ihrer Shell nicht gesetzt ist (überprüfen Sie mit printenv TZ, die nichts zurückgeben sollten).

Tun

ps auxwwe | grep cron | grep TZ

um zu testen, ob Cron mit dem TZ-Set gestartet wurde. Wenn es nichts zurückgibt, wurde TZ beim Start nicht festgelegt. Wenn es gesetzt ist, müssen Sie Ihren Bootprozess zurückverfolgen, um zu sehen, wo TZ gesetzt wurde. Beginnen Sie mit dem Skript, das cron gestartet hat.

Es gibt mehr über Cron und Zeitzonen hier:

https://askubuntu.com/questions/54364/how-do-you-set-the-timezone-for-crontab

--jh--

Joe
quelle
3

Auf meiner Amazon EC2 Linux-Instanz hat das Setzen der TZ-Variablen nur die Zeitzonenprogramme geändert, die nach dem Start von cron verwendet wurden, aber nicht die Zeit, zu der cron sie gestartet hat - sie wurden immer noch gemäß der UTC-Zeit gestartet.

Um Cron dazu zu bringen, Programme gemäß der Ortszeit zu starten, musste ich wechseln /etc/localtime Um eine symbolische Verknüpfung zu der entsprechenden TZ-Datei für meine Zeitzone herzustellen, starten Sie den Cron-Dienst neu:

mv /etc/localtime /etc/localtime.bak
ln -s /usr/share/zoneinfo/America/Chicago /etc/localtime
service crond restart

Mehr Infos hier: https://www.freedesktop.org/software/systemd/man/localtime.html

Russell G
quelle
CRON_TZ funktioniert für Amazon Linux. So fügen Sie dies oben in Ihren Cron-Eintrag ein: CRON_TZ="America/Chicago". Lauf man 5 crontab und suchen Sie nach TZ, um zu überprüfen, ob Ihre Distribution dies unterstützt CRON_TZ.
cMɔ
1

Ich hatte mein System auf UTC konfiguriert, bevor ich es auf meine lokale Zeitzone umstellte.

Ich stellte fest, dass ich cron neu starten musste, nachdem ich die Zeitzone des Systems geändert hatte.

hultqvist
quelle
1

Habe das gerade auf Ubuntu 14/16 herausgefunden. Arbeitete perfekt für mich.

Schritte (sudo impliziert):

  1. cat /etc/timezone
  2. rm -fv /etc/localtime
  3. ln -s /usr/share/zoneinfo/Asia/Kolkata /etc/localtime
  4. apt install -y --reinstall tzdata
  5. /etc/init.d/rsyslog restart
  6. tail -f /var/log/syslog
  7. cat /etc/timezone
Varun Chandak
quelle
rsyslog +1 funktioniert bei mir.
Rahul Chordiya