Tutoriel Linux

Controleer NTP met timedatectl voordat je ergens anders naar een storing zoekt

Débutant3 min de lecture

Een certificaat dat weigert te valideren, onordelijke logboeken of een taak die een uur te vroeg wordt geactiveerd, beschuldigt snel de applicatie. Begin met het lezen van de klok van de machine. Op een VM of een server met systemd toont timedatectl de tijdzone, de NTP-service en de synchronisatietoestand voordat er correcties worden aangebracht.

Het doel is om drie gevallen te scheiden: het UTC-moment is fout, de tijdzone toont een verkeerde lokale tijd, of de netwerk-synchronisatie houdt op te werken. Elk geval vereist een andere actie.

Lees de tijd, de tijdzone en de NTP-status

Noteer eerst de lokale tijd, de UTC en de toestand beheerd door systemd. Voer deze controle uit vanuit een sessie die open kan blijven als de tijd of de tijdzone moet worden gewijzigd.

date -Is
date -u -Is
timedatectl status

De uitvoer toont onder andere Lokale tijd, Universele tijd, RTC tijd, Tijdzone, Systeemklok gesynchroniseerd en NTP-service. Een machine ingesteld op UTC kan een onverwachte lokale tijd weergeven terwijl het juiste moment behouden blijft. Vergelijk dus date -u -Is met een bekende referentiebron voordat u de tijdzone beschuldigt.

Vermijd het parseren van de uitvoer van status in een script. Vraag de nuttige eigenschappen op:

timedatectl show -p Timezone -p LocalRTC -p NTP -p NTPSynchronized

Verander de tijdzone zonder de klok te verplaatsen

Als de UTC consistent is maar de lokale tijd dat niet is, controleer dan eerst of de verwachte tijdzone bestaat:

timedatectl list-timezones | grep -Fx 'Europe/Paris'

Pas vervolgens de tijdzone toe, en controleer opnieuw de waarde en de lokale tijd:

sudo timedatectl set-timezone Europe/Paris
timedatectl show -p Timezone --value
date -Is

Deze opdracht verandert de presentatie van het UTC-moment, maar stelt de klok niet gelijk. Controleer de timers en de onderhoudsvensters na de wijziging. Een cron-taak zoals 15 2 * * * volgt de lokale tijd van de service, terwijl een systemd-timer zijn eigen tijdzone kan verklaren.

systemctl list-timers --all

De gids over systemd-timers en hun verschil met cron helpt deze lijst te interpreteren. Een wijziging van de tijdzone rechtvaardigt geen herstart van een externe server.

Activeer NTP met een enkele synchronisatieclient

Voordat u timedatectl set-ntp true gebruikt, identificeer de al geïnstalleerde client. Afhankelijk van de distributie kan de klok worden beheerd door systemd-timesyncd, Chrony of ntpd.

systemctl list-unit-files | grep -E '^(systemd-timesyncd|chrony|chronyd|ntp).service'
systemctl is-active systemd-timesyncd
systemctl is-active chrony
systemctl is-active chronyd

Een inactieve service betekent niet dat u alle andere moet opstarten. Houd één NTP-client. Op een machine die systemd-timesyncd gebruikt, activeert u de synchronisatie en controleert u het resultaat:

sudo timedatectl set-ntp true
timedatectl show -p NTPSynchronized --value
timedatectl show-timesync --all
journalctl -u systemd-timesyncd -b --no-pager

De eigenschap NTPSynchronized=yes bevestigt dat systemd de klok als gesynchroniseerd beschouwt. show-timesync geeft ook de gekozen server en de bekende parameters van timesyncd weer. Als Chrony de klok al beheert, gebruik dan zijn tools in plaats van timesyncd opnieuw te activeren. Het artikel over Chrony onder Linux behandelt dit geval.

Vermijd handmatige correctie op een server

Start timedatectl set-time niet omdat een logboek gedateerd lijkt. Een handmatige sprong kan certificaten, Kerberos, sessie- of databasevergrendelingen en geplande taken verstoren.

Controleer ook hoe Linux de hardwareklok interpreteert:

timedatectl status
sudo hwclock --show

Linux houdt doorgaans de hardwareklok in UTC. Als RTC in local TZ gelijk is aan yes, controleer dan het beleid van de machine voordat u naar UTC overschakelt, vooral bij dual-boot met Windows. Deze instelling kan de tijd bij de volgende herstart verplaatsen.

Na een correctie, lees timedatectl status, de volgende uitvoeringen en de laatste tien minuten van het logboek van de betrokken dienst opnieuw. Als het moment, NTP en de nieuwe gebeurtenissen overeenkomen, vraagt de applicatie meestal om geen herstart.

De timedatectl-documentatie van systemd verduidelijkt het gedrag van set-ntp en de beschikbare eigenschappen afhankelijk van de geïnstalleerde versie.