Zadania Cron są uruchamiane 1 godzinę przerwy, co jest całkowicie niezgodne z czasami systemowymi

9

Przykład wydania:

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

Powyższe spowoduje wysłanie wiadomości e-mail do użytkownika co minutę, ale wszystkie odpowiedzi „9” pojawią się o 10:00 -> 10:59, a „10” pojawią się o 11:00 -> 11:59 .

Prowadzenie pracy

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

Zwrócono oczekiwaną (poprawną) datę i godzinę. dotyczyło to zarówno czasu UTC, jak i czasu lokalnego (Ameryka / Denver). Zmiana tego zadania, aby uruchamiało się co minutę o określonej godzinie, powoduje przesunięcie (zadania, które mają być uruchamiane o 9, o 10 itd.).

Aktualny debugowanie, które ukończyłem:

Okej, to dziwne. Może mój plik strefy czasowej jest w jakiś sposób pomieszany? Sprawdźmy to

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

Sprawdziłem zegar sprzętowy, aby sprawdzić, czy jest on wyłączony, lub jakoś nie zgadza się z moimi lokalnymi ustawieniami (uruchom jako root).

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

Wygląda na to, że przestanie działać o sekundę, ale to nie powinno sprawić, że moje zadania crona będą działać o całą godzinę poza harmonogramem, prawda?

Jestem również pewien następujących rzeczy:

  • Czy ostatnio zmieniła się moja strefa czasowa? Nie
  • Czy mimo to próbowałeś ręcznie ustawić strefę czasową? tak
  • Czy zresetowałeś crona po ustaleniu strefy czasowej? tak
  • Czy upewniłem się, że usługa cron została zrestartowana? tak
  • Czy zrestartowałem usługę cron? tak
  • Czy naprawdę jesteś pewien, że cron został zrestartowany? 100% pewności, że Cron został zrestartowany

Inne potencjalnie istotne informacje:

Uruchamianie Debiana.

cat /etc/debian_version
8.6

Bieżące jądro

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

Zaktualizowany debugowanie:

Ran 'hwclock --systohc', niezauważalne zmiany w zachowaniu. Uruchom to polecenie, aby sprawdzić

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

Nie mogę uruchomić „cat / etc / sysconfig / clock”, ponieważ ten plik nie istnieje. Uruchomienie polecenia find w drzewie / etc / w celu znalezienia „clock” potwierdza, że ​​nie mam tam pliku o tej nazwie.

Sprawdzono, czy cokolwiek, o czym jestem świadomy, ustawiło zmienną CRON_TZ. Nie jest ustawiony na poziomie użytkownika ani na poziomie katalogu głównego. Wywołanie echa przez crona nie daje żadnego wyniku.

jmurrayufo
źródło
1
Czy CRON_TZzmienna env var jest ustawiona gdziekolwiek?
thrig
spróbuj hwclock --systohctylko dla kompletności i dodaj cat /etc/sysconfig/clockdo pytania?
steve
Dodałem obie sugestie do moich informacji, niestety żadna nie przyniosła dużej wartości. CRON_TZ nie jest ustawiony w żadnym środowisku, które widzę, ponowne zsynchronizowanie hwclocka dało takie same wyniki jak poprzednio (sprawdzone i tak, aby zobaczyć, czy się zmieniło, nie zmieniło się) i nie mam '/ etc / sysconfig / clock „plik.
jmurrayufo

Odpowiedzi:

1

Jeszcze jedno miejsce do poszukiwania: skrypt (y) start-at-boot cronlub plik crontab starej szkoły /etc/crontab. Możliwe, że zmienna środowiskowa TZ zostanie ustawiona, powiedzmy, /etc/init.d/cronielub /lib/systemd/system/crond.servicenie jestem pewien, czego Debian używa do systemu init.

Widziałem coś takiego, gdy próbowałem cronduruchomić rzeczy co drugą godzinę:

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

cronduruchamiał skrypt w nieparzystych godzinach. Podejrzewałem, ale nigdy nie udowodniłem sobie, że ma to związek z zamieszaniem związanym z czasem letnim.

Bruce Ediger
źródło
/etc/init.d/cron pobiera /etc/timezoneplik. TZ = cat /etc/timezone. Ten plik wydaje się być poprawny (przebiegł sumę kontrolną, aby się upewnić, że jest identyczny z tym, jaki powinien być). /lib/systemd/system/crond.service wydaje się nie chcieć modyfikować żadnych zmiennych TZ. Sprawdzę sugestię * / 2, aby zobaczyć, czy widzę to samo.
jmurrayufo