Mam nadzieję, że jest ktoś, kto może mi pomóc z tym dziwnym problemem.
Myślę, że wiem, dlaczego tak się dzieje, ale nie wiem, jak to rozwiązać. Być może dzieje się tak, ponieważ czas BIOS nie jest ustawiony poprawnie lub coś w tym stylu. Ale nie chcę zmieniać czasu BIOS-u około 400+ serwerów. (Lub zmień bit BIOS)
root@spool:~# echo TEST > /dev/kmsg
root@spool:~# dmesg -T | tail -1
[Mon Feb 17 04:57:03 2014] TEST
root@spool:~# date
Mon Feb 17 11:45:17 CET 2014
Serwer uruchamia NTTP do synchronizacji czasu.
Czy ktoś tu wie, jak rozwiązać ten problem w systemie operacyjnym?
Linux spool 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1+deb7u1 x86_64 GNU/Linux
Dlaczego podczas echa /dev/kmsg
data / godzina mojej wiadomości dmesg
nie są synchronizowane z datą / godziną systemową?
/etc/localtime
jest poprawny ?syslog
Czas dostać od localtime.journalctl -k
teraz (w systemach z dziennikiem). Obejmuje to prawidłowy czas w mojej strefie czasowej.Odpowiedzi:
Aby zweryfikować swoją teorię (która, nawiasem mówiąc, jest dźwiękiem), wykonaj następujące czynności jako root:
Spowoduje to wyświetlenie zegara sprzętowego na serwerze, na którym wykonywane jest polecenie.
Aby zsynchronizować zegar sprzętowy z czasem systemowym (którym zarządza ntp), uruchom następujące polecenie:
Ostatni argument (--utc) nakazuje hwclockowi zapisanie czasu w zegarze sprzętowym w skoordynowanym czasie uniwersalnym.
Dodatkowo pamiętaj, że strona podręcznika użytkownika dla dmesg (1) mówi, co oznacza, że twoje zachowanie jest udokumentowane i prawidłowe:
źródło
root@spool:~# hwclock --show
Mon Feb 17 20:30:14 2014 -0.985068 seconds
root@spool:~# hwclock --systohc --utc
root@spool:~# echo TEST > /dev/kmsg
root@spool:~# dmesg -T | tail -1
[Mon Feb 17 13:50:14 2014] TEST
root@spool:~# date
Mon Feb 17 20:30:46 CET 2014
dmesg po prostu wypisuje bufor pierścieniowy jądra, który rejestruje wiadomości o czasie działania w ciągu kilku sekund od uruchomienia jako znacznik czasu.
Jeśli więc użyjesz opcji -T, wszystkie te wartości czasu działania zostaną dodane do daty uruchomienia systemu. Jeśli zdarzyło Ci się spać w trybie zawieszenia lub wznowienia, są one tracone, więc w tych przypadkach opcja -T nie jest przydatna, ponieważ wartości daty / godziny nie były prawidłowe w przeszłości i przeszłości.
źródło
Aby uzyskać dokładne czasy dla „ostatnich” wpisów
dmesg
, możesz przekonwertować znaczniki czasu dmesg na czas rzeczywisty z pewnym zhakowaniem danych wyjściowych.Przez „ostatnie” rozumiem czasy po ostatnim zawieszeniu / wznowieniu, ponieważ (jak już zauważyli inni) czasy zawieszenia nie są liczone w znaczniku czasu dmesg.
Ale jeśli potrzebujesz go często, np. Na notebooku, możesz umieścić w funkcjach lub aliasach coś takiego:
Przykładowe dane wyjściowe:
W porównaniu z oryginalnym
dmesg
wyjściem (które jest wyłączone o 3 dni):źródło
dmesg
linię ze zaktualizowanym wyrażeniem regularnym.