
de Linux timedatectl
Met de opdracht kunt u uw tijd, datum en tijdzone instellen voor uw systeemklok en uw realtime klok. Neem even de tijd en we laten u zien hoe het allemaal werkt.
Het is allemaal relatief
De manier waarop uw computer met tijd omgaat, is een van die dingen waarvan u zou verwachten dat ze vrij eenvoudig zijn. Tenminste, totdat je je erin gaat verdiepen.
De Linux-systeemklok telt het aantal seconden sinds het Unix-tijdperk. Dit was om 00:00:00 op 1 januari 1970, UTC. UTC staat voor universele tijd gecoördineerd, maar het wordt meestal gezegd als gecoördineerde universele tijd of gewoon universele tijd. Dit is de tijdstandaard waarmee de wereld de tijd beheert en reguleert. Verschillende tijdzones passen een verschuiving toe op UTC om hun lokale tijd te verkrijgen. Sommige tijdzones lopen voor op UTC en andere liggen erachter.
De systeemklok in Linux-computers is op software gebaseerd. Het is duidelijk dat het niet kan worden uitgevoerd wanneer de computer is uitgeschakeld. Een andere klok, een op batterijen gebaseerde, op hardware gebaseerde real-time klok, kan lopen wanneer de computer is uitgeschakeld. Het doel is om de systeemklok te vertellen hoe laat het is wanneer Linux opstart. Tenzij toegang tot een Network Time Protocol (NTP)-server mogelijk is.
NTP-servers zijn servers die nauwkeurige tijdinformatie verstrekken aan computers die daarom vragen. Als u uw computer of laptop opstart en er is geen internettoegang – of deze is niet geconfigureerd om NTP-servers te gebruiken – wordt de realtime klok gebruikt om de systeemklok te primen in plaats van een NTP-server.
De systeemklok is altijd in UTC. Elke toepassing die de lokale tijd moet verkrijgen, moet:
- Open de systeemklok en verkrijg UTC
- Weet in welke tijdzone het zich bevindt en pas de juiste offset toe
- Houd er rekening mee of de zomertijd van kracht is
De conversie van UTC naar lokale tijd wordt gedaan door de applicatie, niet door de systeemklok. Of, nauwkeuriger gezegd, de conversie wordt uitgevoerd door de tijd- en datumbibliotheken waaraan de applicatie is gekoppeld. Daarom is het van vitaal belang dat uw computer weet welke tijdzone het is, wat UTC-tijd is, hoeveel seconden er zijn verstreken sinds het Unix-tijdperk en of de zomertijd van kracht is.
Op systemd-gebaseerde Linux-distributies gebruiken we de timedatectl
commando om die instellingen en waarden te zien of te wijzigen.
Aan de slag met timedatectl
Gebruik de om de huidige gegevens en tijd en andere waarden te zien timedatectl
commando met de status
exploitant.
timedatectl status
Eigenlijk kun je de status laten vallen en je krijgt nog steeds dezelfde output.
timedatectl
Beide sets output tonen:
- Lokale tijd: De tijd die de computer denkt dat het is, volgens de tijdzone.
- Universele tijd: De UTC-tijd.
- RTC-tijd: De tijd die de real-time klok gebruikt. Meestal is dit UTC.
- Tijdzone: Informatie over de geconfigureerde tijdzone.
- Systeemklok gesynchroniseerd: Of de systeemklok is gesynchroniseerd met een NTP-server.
- NTP-service: of de NTP-service van de computer actief is.
- RTC in lokale TZ: Of de realtime klok de lokale tijd gebruikt in plaats van UTC.
U kunt zien hoeveel tijdzones de timedatectl
commando ondersteunt door te typen:
timedatectl list-timezones | wc -l
Dat is veel meer dan er tijdzones in de wereld zijn. Als we de uitvoer naar grep
en filter de vermeldingen voor “Amerika” en pijp dat in less
kunnen we door een beter beheersbare lijst bladeren.
timedatectl list-timezones | grep "America/" | less
Als je die lijst bekijkt, zul je zien dat “Amerika” de breedst mogelijke betekenis heeft. Het tweede dat opvalt, is dat de meeste vermeldingen geen echte tijdzones zijn.
De tijdzone instellen
Als u door de ongefilterde lijst met tijdzones kijkt die worden ondersteund door timedatectl
je ziet zowel plaatsen als tijdzones. Om een ​​tijdzone in te stellen, kunt u deze op naam specificeren, zoals EST of GMT, of u kunt een locatie kiezen in dezelfde tijdzone als u, zoals Londen of New York.
Je tijdzone opnieuw instellen is niet iets dat je vaak zult doen, maar misschien ben je verhuisd of werk je een tijdje weg en wil je je laptop lokaliseren. Als u uw tijdzone opnieuw moet instellen, kiest u een locatie in de tijdzone die u wilt gebruiken.
We zetten deze computer op bergtijd, wat dezelfde tijdzone is als Edmonton. We zullen dan zien hoe de instellingen zijn veranderd.
timedatectl set-timezone "America/Edmonton"
timedatectl
Onze tijdzone is gewijzigd, onze lokale tijd is gewijzigd en onze afwijking van UTC is toegenomen.
De tijd en datum handmatig instellen
Hoewel het handmatig instellen van de tijd en datum mogelijk is, is dit meestal niet nodig. Het gebruik van tijdsynchronisatie en NTP is de beste manier om de tijd en datum van uw computer nauwkeurig te houden. Als u de datum of tijd van uw computer probeert te wijzigen, krijgt u waarschijnlijk een foutmelding die aangeeft dat tijdsynchronisatie in gebruik is.
timedatectl set-time 10:30:00
Gebruik deze opdracht om de tijdsynchronisatieservice uit te schakelen:
sudo systemctl stop systemd-timesyncd.service
U kunt de tijd, de datum of beide instellen met de timedatectl
bediener van de ingestelde tijd. datums zijn in jaar-maand-dag volgorde JJJ-MM-DD, en tijd is in uren-minuten-seconden volgorde HH:MM:SS. We gaan de tijd en datum instellen met dit commando:
timedatectl set-time "2022-01-30 10:30:00"
We controleren dan of de wijzigingen zijn doorgevoerd met timedatectl
.
timedatectl
De datum en tijd zijn gewijzigd. Houd er ook rekening mee dat de computer een valse UTC-tijd gebruikt. We hebben ook vernomen dat de systeemklok niet wordt gesynchroniseerd en dat de NTP-service inactief is.
Als u internettoegang heeft, wordt de tijd opgehaald zodra u de tijdsynchronisatieservice herstelt en worden alle details correct gereset.
sudo systemctl start systemd-timesyncd.service
timedatectl
RTC: UTC of LTZ?
Het is mogelijk om uw realtime klok in te stellen op uw lokale tijdzonetijd in plaats van op UTC – mogelijk, maar niet raadzaam. Als u de wijziging aanbrengt, ziet u een waarschuwing over de ernstige gevolgen die dit in de toekomst op uw systeem kan hebben.
De reden om u deze methode te laten zien, is dat u mogelijk een machine tegenkomt waar ze vreemde problemen hebben met hun tijdinstellingen. Zo zet u de realtime klok terug naar UTC.
Eerst moeten we het instellen op de lokale tijdzone.
timedatectl set-local-rtc 1
Dan vragen we timedatectl
voor zijn status.
timedatectl
Ik denk dat ze hun gevoelens duidelijk hebben gemaakt.
Gebruik deze opdracht om de realtime klok naar UTC te herstellen:
timedatectl set-local-rtc 0
Stel het in en vergeet het
Tenzij je een fout hebt gemaakt tijdens de installatie van je Linux-distributie, of je verhuist, is er meestal geen reden om de instellingen van je systeem en realtime klokken te wijzigen.
Stel de systeemklok in op uw tijdzone, de realtime klok op UTC en zorg ervoor dat uw systeem een ​​netwerktijdprotocolserver pollt. Dat is de standaardstatus na de meeste installaties.
Als ze allemaal zijn ingesteld, zorgen de tijdsystemen van uw computer voor zichzelf.