De systemd terminal opdracht timedatectl gebruik je om de tijdzone aan te passen en de systeemklok te synchroniseren met een tijdserver via NTP (Network Time Protocol).
Eerst bepalen we de huidige tijdzone met de volgende opdracht:
dany@pindabook:~> timedatectl
Local time: vr 2020-10-02 16:16:06 CEST
Universal time: vr 2020-10-02 14:16:06 UTC
RTC time: vr 2020-10-02 14:16:06
Time zone: Europe/Brussels (CEST, +0200)
Network time on: no
NTP synchronized: yes
RTC in local TZ: no
Om een lijst met alle tijdzone's op te vragen, gebruik je:
dany@pindabook:~> timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
...
Deze lijst is relatief lang, met grep kan je er de tijdzone's van een land of werelddeel uitfilteren. Zo bevat Europa te volgende tijdzone's:
dany@pindabook:~> timedatectl list-timezones | grep Europe
Europe/Amsterdam
Europe/Andorra
Europe/Astrakhan
Europe/Athens
Europe/Belgrade
Europe/Berlin
Europe/Bratislava
Europe/Brussels
Europe/Bucharest
Europe/Budapest
Europe/Busingen
Europe/Chisinau
Europe/Copenhagen
Europe/Dublin
Europe/Gibraltar
Europe/Guernsey
Europe/Helsinki
Europe/Isle_of_Man
Europe/Istanbul
Europe/Jersey
Europe/Kaliningrad
Europe/Kiev
Europe/Kirov
Europe/Lisbon
Europe/Ljubljana
Europe/London
Europe/Luxembourg
Europe/Madrid
Europe/Malta
Europe/Mariehamn
Europe/Minsk
Europe/Monaco
Europe/Moscow
Europe/Oslo
Europe/Paris
Europe/Podgorica
Europe/Prague
Europe/Riga
Europe/Rome
Europe/Samara
Europe/San_Marino
Europe/Sarajevo
Europe/Saratov
Europe/Simferopol
Europe/Skopje
Europe/Sofia
Europe/Stockholm
Europe/Tallinn
Europe/Tirane
Europe/Ulyanovsk
Europe/Uzhgorod
Europe/Vaduz
Europe/Vatican
Europe/Vienna
Europe/Vilnius
Europe/Volgograd
Europe/Warsaw
Europe/Zagreb
Europe/Zaporozhye
Europe/Zurich
Om een tijdzone, bijvoorbeeld Europe/London, in te stellen gebruik je:
dany@pindabook:~> timedatectl set-timezone Europe/London
==== AUTHENTICATING FOR org.freedesktop.timedate1.set-timezone ====
Authentication is required to set the system timezone.
Authenticating as: root
Password:
==== AUTHENTICATION COMPLETE ====
Zoals je merkt kan enkel de root gebruiker de tijdzone van een systeem aanpassen. Bijna onmiddellijk wordt de tijd van het systeem aangepast. Om terug de Belgische tijd te gebruiken:
dany@pindabook:~> timedatectl set-timezone Europe/Brussels
==== AUTHENTICATING FOR org.freedesktop.timedate1.set-timezone ====
Authentication is required to set the system timezone.
Authenticating as: root
Password:
==== AUTHENTICATION COMPLETE ====
Bij het instellen van een tijdzone wordt een symbolische koppeling van de tijdzone in de map /usr/share/zoneinfo/ naar /etc/localtime aangemaakt of aangepast.
dany@pindabook:~> ls -l /etc/localtime
lrwxrwxrwx 1 root root 37 2 okt 16:31 /etc/localtime -> ../usr/share/zoneinfo/Europe/Brussels
Opnieuw kan je controleren of de NTP synchronisatie is ingeschakeld:
dany@pindabook:~> timedatectl
Local time: vr 2020-10-02 16:16:06 CEST
Universal time: vr 2020-10-02 14:16:06 UTC
RTC time: vr 2020-10-02 14:16:06
Time zone: Europe/Brussels (CEST, +0200)
Network time on: no
NTP synchronized: yes
RTC in local TZ: no
Om de NTP dienst (service) te activeren, gebruik je de opdracht:
dany@pindabook:~> timedatectl set-ntp true
==== AUTHENTICATING FOR org.freedesktop.timedate1.set-ntp ====
Authentication is required to control whether network time synchronization shall be enabled.
Authenticating as: root
Password:
==== AUTHENTICATION COMPLETE ====
Deze opdracht mislukt als er geen NTP service (timesyncd, ntpd, Chrony en dergelijke) geïnstalleerd is. Bij het gebruik van chrony of ntpd, moet de systemd-timedated service actief zijn, of zelfs herstart worden. Dat kan je nagaan met de opdracht:
dany@pindabook:~> sudo systemctl status systemd-timedated.service
[sudo] wachtwoord voor root:
● systemd-timedated.service - Time & Date Service
Loaded: loaded (/usr/lib/systemd/system/systemd-timedated.service; static; vendor preset: disabled)
Active: inactive (dead)
Docs: man:systemd-timedated.service(8)
man:localtime(5)
https://www.freedesktop.org/wiki/Software/systemd/timedated
okt 02 16:16:03 pindabook systemd-timedated[5812]: Set NTP to disabled
okt 02 16:28:13 pindabook systemd[1]: Starting Time & Date Service...
okt 02 16:28:13 pindabook systemd[1]: Started Time & Date Service.
okt 02 16:28:22 pindabook systemd-timedated[6132]: Changed time zone to 'Europe/London'.
okt 02 16:31:30 pindabook systemd[1]: Starting Time & Date Service...
okt 02 16:31:30 pindabook systemd[1]: Started Time & Date Service.
okt 02 16:31:35 pindabook systemd-timedated[6235]: Changed time zone to 'Europe/Brussels'.
okt 02 16:41:59 pindabook systemd[1]: Starting Time & Date Service...
okt 02 16:41:59 pindabook systemd[1]: Started Time & Date Service.
okt 02 16:42:05 pindabook systemd-timedated[6499]: Set NTP to enabled
Om de tijd effectief te synchroniseren moet je op sommige systemen ook de systemd-timesyncd service herstarten. Dit kan je nagaan met de opdracht:
dany@pindabook:~> sudo systemctl status systemd-timesyncd.service
● systemd-timesyncd.service - Network Time Synchronization
Loaded: loaded (/usr/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2020-10-02 16:42:05 CEST; 7min ago
Docs: man:systemd-timesyncd.service(8)
Main PID: 6523 (systemd-timesyn)
Status: "Synchronized to time server 162.159.200.1:123 (0.opensuse.pool.ntp.org)."
Tasks: 2
CGroup: /system.slice/systemd-timesyncd.service
└─6523 /usr/lib/systemd/systemd-timesyncd
okt 02 16:42:05 pindabook systemd[1]: Starting Network Time Synchronization...
okt 02 16:42:05 pindabook systemd[1]: Started Network Time Synchronization.
okt 02 16:42:05 pindabook systemd-timesyncd[6523]: Synchronized to time server 162.159.200.1:123 (0.opensuse.pool.ntp.org).