timedatectl : vérifier la synchronisation de l'heure d'un serveur Linux et régler le fuseau horaire

Environnement de testFamille RHELAlmaLinux 9.8systemd 252 · chrony 4.8Compte rootDebian 12 compte standardVérifié le 2026-10-29
Commandes d'informations système et de réglagestimedatectlEmplacement/usr/bin/timedatectl

timedatectl est une commande systemd qui affiche et modifie l'horloge système, le fuseau horaire et l'état de la synchronisation NTP d'un serveur Linux. Lors de la vérification de la synchronisation sur un serveur AlmaLinux 9 qui utilise chrony et sur un serveur Debian 12 qui utilise ntpsec, les deux serveurs avaient une horloge à l'heure, mais la ligne NTP service affichait active sur l'un et n/a sur l'autre.

Les sorties ci-dessous proviennent des deux serveurs. Seuls les noms d'hôte, les adresses IP et les numéros de version des paquets ont été remplacés par des valeurs d'exemple, et les commandes qui changent l'heure ou le fuseau horaire n'ont pas été lancées sur le serveur en production.

1️⃣ Utiliser timedatectl et vérifier l'heure du serveur Linux

Lancer timedatectl sans option donne le même résultat qu'avec status. L'heure de l'horloge système et de l'horloge matérielle (RTC), le fuseau horaire et l'état de la synchronisation sont réunis sur un seul écran. Voici le résultat sur le serveur Debian 12.

timedatectl
               Local time: Wed 2026-10-28 19:49:57 UTC
           Universal time: Wed 2026-10-28 19:49:57 UTC
                 RTC time: Wed 2026-10-28 19:49:57
                Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: n/a
          RTC in local TZ: no

Le fuseau horaire du serveur Debian 12 est Etc/UTC, donc Local time et Universal time affichaient la même heure. Ce que chaque ligne indique et les résultats des deux serveurs figurent dans le tableau ci-dessous.

Ligne de sortieCe qu'elle afficheRésultats des deux serveurs et points à vérifier
Local timeHeure actuelle de l'horloge système, fuseau horaire appliquéAprès un changement de fuseau, seules cette ligne et la sortie de date passent au nouveau fuseau
Universal timeLa même heure exprimée en UTCNe change pas avec le fuseau horaire – sur le serveur Debian 12 (Etc/UTC), identique à Local time
RTC timeHeure de l'horloge matérielle (RTC)Affichée sans fuseau horaire – heure UTC si RTC in local TZ vaut no
Time zoneFuseau horaire configuré, son abréviation et l'écart avec UTCPour le changer, utiliser un nom de la liste de list-timezones
System clock synchronizedSi le noyau considère l'horloge comme synchroniséeyes sur les deux serveurs – si no, vérifier d'abord le serveur de référence avec chronyc tracking ou ntpq -p
NTP serviceSi le service de synchronisation que timedatectl active et désactive est en cours d'exécutionactive sur AlmaLinux 9 (chrony), n/a sur Debian 12 (ntpsec) – n/a signifie que timedatectl ne connaît pas le service, vérifier alors avec systemctl
RTC in local TZSi l'horloge matérielle est gardée à l'heure locale (no = UTC)no sur les deux serveurs – la commande pour passer de yes à UTC est set-local-rtc 0

Linux a deux horloges. L'horloge système est tenue par le noyau après le démarrage, et l'horloge matérielle est celle de la carte mère, qui garde l'heure même quand le serveur est éteint.

L'horloge matérielle se lit directement avec hwclock. hwclock affiche l'heure convertie dans le fuseau horaire actuel. Sur le serveur AlmaLinux, la lecture avec TZ=UTC devant la commande a donné une heure UTC se terminant par +00:00.

TZ=UTC hwclock --show
2026-10-28 19:53:33.006788+00:00

Sur le serveur Debian 12, auquel on s'était connecté avec un compte ordinaire, la même commande s'est arrêtée sans pouvoir accéder à l'horloge matérielle.

/usr/sbin/hwclock --show
hwclock: Cannot access the Hardware Clock via any known method.
hwclock: Use the --verbose option to see the details of our search for an access method.

La ligne RTC in local TZ correspond au même réglage que la troisième ligne du fichier /etc/adjtime. Sur le serveur AlmaLinux, la troisième ligne était UTC, ce qui signifie que l'horloge matérielle est gardée en UTC.

cat /etc/adjtime
0.0 0 0.0
0
UTC

Pour lire des valeurs dans un script, utilisez show au lieu de status. Sur le serveur Debian 12, les mêmes informations s'affichent sous la forme nom=valeur, une par ligne.

timedatectl show
Timezone=Etc/UTC
LocalRTC=no
CanNTP=no
NTP=no
NTPSynchronized=yes
TimeUSec=Wed 2026-10-28 19:49:57 UTC
RTCTimeUSec=Wed 2026-10-28 19:49:57 UTC

Choisissez les propriétés avec -p et ajoutez --value pour ne garder que les valeurs, sans les noms. Cette forme sert à extraire seulement le nom du fuseau horaire.

timedatectl show -p Timezone --value
Etc/UTC

🔲 Simulateur de la commande timedatectl

Dans le simulateur ci-dessous, vous pouvez saisir vous-même les commandes pour voir l'heure, lister les fuseaux horaires, changer de fuseau et vérifier la synchronisation avec chronyc.

Simulateur de la commande timedatectlsystemd 252 · chrony 4.8
[root@server work]#
Fonctionne uniquement dans le navigateur. Un fuseau horaire modifié revient au départ (Etc/UTC) au rechargement, et ↑↓ rappelle les commandes précédentes.

2️⃣ État de la synchronisation de l'heure du serveur Linux

La ligne System clock synchronized indique si le noyau considère l'horloge comme synchronisée, et la ligne NTP service indique si le service de synchronisation que timedatectl peut activer et désactiver est en cours d'exécution. Avec show, les mêmes valeurs apparaissent sous NTPSynchronized et NTP, et CanNTP indique s'il existe un service de synchronisation activable et désactivable.

Sur le serveur AlmaLinux 9 avec chrony, les trois valeurs étaient yes.

timedatectl show -p CanNTP -p NTP -p NTPSynchronized
CanNTP=yes
NTP=yes
NTPSynchronized=yes

Sur le serveur Debian 12, qui règle l'heure avec ntpsec, seul NTPSynchronized était yes, CanNTP et NTP étaient no. C'est pourquoi la ligne NTP service affichait n/a sur l'écran status de ce serveur.

timedatectl show -p CanNTP -p NTP -p NTPSynchronized
CanNTP=no
NTP=no
NTPSynchronized=yes

Le service ntpsec lui-même tournait.

systemctl is-active ntpsec
active

Les seuls services de synchronisation que connaît timedatectl sont ceux inscrits dans les fichiers de liste du dossier ntp-units.d, et les paquets de la distribution placent ces fichiers dans /usr/lib/systemd/ntp-units.d/ (d'après le manuel officiel). Le serveur AlmaLinux 9 avait un fichier de liste installé par le paquet chrony, contenant une seule ligne, chronyd.service.

cat /usr/lib/systemd/ntp-units.d/50-chronyd.list
chronyd.service
rpm -qf /usr/lib/systemd/ntp-units.d/50-chronyd.list
chrony-4.8-10.el9.x86_64

Le serveur Debian 12 n'avait pas ce dossier. Comme ntpsec n'est pas dans la liste, timedatectl savait que l'horloge était synchronisée, mais ne pouvait ni activer ni désactiver ce service.

ls /usr/lib/systemd/ntp-units.d/
ls: cannot access '/usr/lib/systemd/ntp-units.d/': No such file or directory
🖥️ timedatectlstatus, show, set-ntp
ntp-units.d/*.listListe des services de synchronisation que timedatectl active et désactive
chronyd.serviceDans la liste → NTP service: active
ntpsec.serviceHors de la liste → NTP service: n/a

3️⃣ Vérifier la synchronisation de l'heure avec chronyc

Sur un serveur avec chrony, chronyc indique sur quel serveur de temps l'horloge se cale. sources affiche les serveurs de temps interrogés par chronyd et leur état, un par ligne.

chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^- 192.0.2.10                    2  10   377   943   +272us[ +275us] +/-   55ms
^- ntp1.example.com              2  10   377    80    -28us[  -32us] +/- 3655us
^- 198.51.100.33                 3  10   257   384   -151us[ -156us] +/-   97ms
^- 198.51.100.82                 3  10   177   532   +157us[ +149us] +/-   45ms
^* 192.0.2.123                   3   4   377     2    -21us[  -23us] +/-  312us

Le ^ en tête désigne un serveur de temps, un * en deuxième caractère le serveur de référence sur lequel l'horloge se cale en ce moment, et - un candidat non retenu dans le calcul. Poll 4 sur le serveur de référence signifie une interrogation toutes les 16 secondes (2 puissance 4), et Reach 377 indique que les huit dernières réponses ont toutes été reçues.

tracking affiche l'écart entre l'horloge système et l'heure du serveur de référence.

chronyc tracking
Reference ID    : C000027B (192.0.2.123)
Stratum         : 4
Ref time (UTC)  : Wed Oct 28 19:50:21 2026
System time     : 0.000002422 seconds slow of NTP time
Last offset     : -0.000002098 seconds
RMS offset      : 0.000000981 seconds
Frequency       : 6.348 ppm slow
Residual freq   : -0.001 ppm
Skew            : 0.017 ppm
Root delay      : 0.000300815 seconds
Root dispersion : 0.000150780 seconds
Update interval : 16.3 seconds
Leap status     : Normal

La ligne System time montre que l'horloge système retardait de 0.000002422 seconde sur l'heure NTP, et Leap status était Normal. Un Update interval de 16.3 secondes est l'intervalle entre les deux dernières mises à jour de l'horloge.

Les serveurs interrogés sont fixés par les lignes pool et server de /etc/chrony.conf. En ne gardant que les lignes de réglage, sans commentaires ni lignes vides, on obtient ceci.

grep -v "^#" /etc/chrony.conf | grep -v "^$"
pool 2.almalinux.pool.ntp.org iburst
sourcedir /run/chrony-dhcp
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
keyfile /etc/chrony.keys
ntsdumpdir /var/lib/chrony
leapsectz right/UTC
logdir /var/log/chrony
server 192.0.2.123 prefer iburst minpoll 4 maxpoll 4

La ligne pool interroge le pool NTP d'AlmaLinux, et prefer sur la dernière ligne server est une option qui fait choisir ce serveur avant les autres. makestep 1.0 3 est un réglage qui, lors des trois premières mises à jour après le démarrage de chronyd, corrige d'un coup une horloge décalée de plus de 1 seconde, puis l'ajuste peu à peu en la faisant tourner un peu plus vite ou plus lentement. rtcsync fait copier par le noyau l'heure système vers l'horloge matérielle toutes les 11 minutes (d'après la documentation officielle).

Sur le serveur Debian 12 avec ntpsec, les mêmes informations ont été vérifiées avec ntpq -p. Le * en tête est le serveur de référence, et les trois serveurs étaient interrogés toutes les 1024 secondes.

ntpq -p
     remote           refid      st t when poll reach   delay   offset   jitter
===============================================================================
+203.0.113.43    198.51.100.28    2 u  835 1024  377 184.6893  -0.1018   1.4879
+203.0.113.44    198.51.100.27    2 u  547 1024  377 183.0827  -2.4227   4.0957
*ntp2.example.co 198.51.100.40    2 u  440 1024  377 177.4670  -0.5814   1.7070

4️⃣ Changer le fuseau horaire avec timedatectl

Les noms de fuseaux horaires se consultent avec list-timezones. La plupart ont la forme Continent/Ville, un par ligne, et les deux serveurs en avaient 598.

timedatectl list-timezones | head -5
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
timedatectl list-timezones | wc -l
598

La liste est longue ; pour chercher un nom, filtrez-la avec grep.

timedatectl list-timezones | grep -i new_york
America/New_York

On change de fuseau horaire en donnant un nom de la liste après set-timezone. Cette commande remplace le lien /etc/localtime par le nouveau fichier de fuseau horaire, il faut donc la lancer avec sudo depuis un compte ordinaire.

sudo timedatectl set-timezone America/New_York

ls -l permet de vérifier si /etc/localtime est un lien vers un fichier de fuseau horaire.

ls -l /etc/localtime
lrwxrwxrwx 1 root root 27 Sep 24 12:52 /etc/localtime -> /usr/share/zoneinfo/Etc/UTC

Un nom absent de la liste a été refusé tout de suite, avant tout changement de fuseau horaire.

timedatectl set-timezone Mars/Olympus
Failed to set time zone: Invalid or not installed time zone 'Mars/Olympus'

Changer de fuseau horaire ne modifie pas l'heure de l'horloge système ; seuls Local time et la sortie de la commande date apparaissent dans le nouveau fuseau. Sur un serveur dont l'horloge matérielle est en UTC, l'horloge matérielle ne change pas non plus (d'après le manuel officiel).

5️⃣ Activer NTP et régler l'heure à la main avec timedatectl

set-ntp true démarre le premier service de la liste des services de synchronisation et l'active au démarrage. false arrête les services de la liste et les désactive au démarrage (d'après le manuel officiel).

sudo timedatectl set-ntp true

Sur le serveur Debian 12 sans fichier de liste, la commande s'est terminée par NTP not supported, même avec false, la valeur actuelle. Un service absent de la liste, comme ntpsec, se démarre et s'arrête directement avec systemctl.

timedatectl set-ntp false
Failed to set ntp: NTP not supported

Pour régler l'heure à la main, indiquez la date et l'heure après set-time. Cette commande règle l'horloge matérielle en même temps que l'horloge système.

sudo timedatectl set-time '2026-10-28 20:00:00'

Sur le serveur Debian 12, la saisie d'une valeur au mauvais format s'est terminée par une erreur sans changer l'heure.

timedatectl set-time bad
Failed to parse time specification 'bad': Invalid argument

Sur un serveur avec chrony, pour corriger d'un coup une horloge très décalée, on utilise chronyc makestep.

sudo chronyc makestep

makestep abandonne l'écart restant qui était corrigé peu à peu et fait sauter l'horloge système de cette valeur immédiatement. La documentation officielle avertit qu'un changement brusque de l'heure peut perturber certains logiciels ; ne l'utilisez donc que lorsque l'horloge est trop décalée pour être corrigée lentement.

🔢 FAQ & contenus recommandés

Les services NTP comme chrony et ntpsec gardent l'horloge synchronisée en continu, il n'y a donc presque plus de raison de lancer rdate par cron. Sur le serveur AlmaLinux 9 vérifié, rdate n'était pas installé et ne figurait pas non plus dans la liste des paquets installables. Le dépôt du serveur Debian 12 contenait le paquet rdate 1.11, mais il n'était pas installé.

timesync-status est une commande propre à systemd-timesyncd. Sur le serveur AlmaLinux 9 avec chrony comme sur le serveur Debian 12 avec ntpsec, elle s'est terminée par l'erreur Failed to query server. Sur ces serveurs, vérifiez l'état de la synchronisation avec chronyc tracking ou ntpq -p.

Le manuel officiel explique que garder l'horloge matérielle à l'heure locale peut poser problème lors d'un changement de fuseau horaire ou du passage à l'heure d'été. Il recommande donc de la laisser en UTC si possible, et la commande pour passer en UTC est sudo timedatectl set-local-rtc 0. Les deux serveurs vérifiés étaient à no (UTC).

ℹ️ Mention d'affiliation
Le contenu de ce site contient des liens d'affiliation. Lorsqu'un visiteur achète un produit ou un service via l'un de ces liens, le site perçoit une commission du vendeur. Le montant payé par l'acheteur(il baisse lors des promotions ↓), lui, n'augmente pas. Les prix, remises et stocks indiqués correspondent à la date de rédaction et peuvent différer ; vérifiez-les donc auprès du vendeur avant d'acheter. Les produits sont choisis et évalués selon nos propres critères, et les commissions n'influencent ni l'ordre de présentation ni le contenu des évaluations.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Prouvez que vous êtes humain : 6   +   5   =