Tips en Trucs 2020

Tijdzone en tijdsynchronisatie instellen met timedatectl

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).

De tijdzone aanpassen

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

De systeemklok synchroniseren met een NTP tijdserver

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).
timedatectl help