Mam cronjob, który jest wykonywany codziennie o 9:00 czasu UTC. Jestem w GMT + 1, więc wykonuje się o godzinie 10:00 czasu lokalnego. Gdy nastąpi zmiana strefy czasowej (na czas letni, DST), cronjob wykonuje się nadal o godzinie 9:00 czasu UTC, ale o godzinie 11:00 czasu lokalnego. Ale chcę, aby zawsze działało o godzinie 10:00, bez względu na czas letni lub nie. Jak mogę to zrobić?
10
Odpowiedzi:
Sprawdź ustawienia w / etc / timezone. W pytaniu, o którym wspomniałeś, że jesteś w „GMT + 1”, jeśli taka jest twoja strefa czasowa, skrypt zawsze będzie wykonywany w UTC plus jedna godzina. Jeśli ustawisz na np. „Europa / Paryż”, czas wykonania zmieni się wraz z czasem letnim.
źródło
Będzie to prawdopodobnie zależeć od twojego systemu operacyjnego i jego implementacji
cron
. Nie jest to możliwe w najpopularniejszej implementacji crona,vixie/isc cron
. Zcrontab(5) manpage
:źródło
Rozwijając odpowiedź @Cyrus, zrobiłem to:
Zrobiłem skrypt sprawdzający przesunięcie UTC:
Następnie dodaję dwa wpisy crontab każdy dla żądanego przesunięcia:
źródło
Ze strony podręcznika:
źródło
Przenieś cronjob do godziny 8:00 i śpij godzinę, jeśli jesteś w GMT + 1
źródło