timedatectl¶
timedatectl est l'outil de configuration de la date, de l'heure, du fuseau horaire et de la synchronisation NTP sous systemd. Il pilote systemd-timesyncd (client SNTP intégré) et interagit avec l'horloge matérielle (RTC).
Syntaxe générale¶
État et informations¶
# État complet : heure locale, UTC, RTC, fuseau, NTP
timedatectl status
# Vue condensée (systemd 239+)
timedatectl show
# Propriété spécifique
timedatectl show -p NTP
timedatectl show -p Timezone
timedatectl show -p LocalRTC
Exemple de sortie de timedatectl status :
Local time: Wed 2026-05-20 09:00:00 CEST
Universal time: Wed 2026-05-20 07:00:00 UTC
RTC time: Wed 2026-05-20 07:00:00
Time zone: Europe/Paris (CEST, +0200)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Fuseau horaire¶
# Lister tous les fuseaux disponibles
timedatectl list-timezones
# Filtrer
timedatectl list-timezones | grep Europe
timedatectl list-timezones | grep Paris
# Définir le fuseau horaire
sudo timedatectl set-timezone Europe/Paris
sudo timedatectl set-timezone UTC
sudo timedatectl set-timezone America/New_York
Serveurs sans interface graphique
Il est recommandé de configurer les serveurs en UTC et de gérer le fuseau horaire au niveau de l'application ou des logs. Cela évite les ambiguïtés lors des changements d'heure (heure d'été/hiver).
Synchronisation NTP¶
# Activer la synchronisation NTP (via systemd-timesyncd ou chrony/ntpd)
sudo timedatectl set-ntp true
# Désactiver
sudo timedatectl set-ntp false
# Vérifier l'état de synchronisation
timedatectl status
# Chercher "System clock synchronized" et "NTP service"
État détaillé de timesyncd¶
# État du client NTP systemd-timesyncd
timedatectl timesync-status
# Affichage exemple :
# Server: 185.125.190.57 (ntp.ubuntu.com)
# Poll interval: 1min 4s (min: 32s; max 34min 8s)
# Leap: normal
# Version: 4
# Stratum: 2
# Reference: 11FABA17
# Precision: 1us (-20)
#Root distance: 10.376ms (max: 5s)
# Offset: +1.209ms
# Delay: 20.662ms
# Jitter: 1.533ms
# Packet count: 5
# Propriétés brutes de timesyncd
timedatectl show-timesync
timedatectl show-timesync -p ServerName
timedatectl show-timesync -p NTPMessage
Réglage manuel de l'heure¶
Désactiver NTP avant réglage manuel
Il faut désactiver set-ntp avant de modifier l'heure manuellement, sinon timesyncd écrase le changement.
# Désactiver NTP
sudo timedatectl set-ntp false
# Définir date et heure (format : "YYYY-MM-DD HH:MM:SS")
sudo timedatectl set-time "2026-05-20 09:30:00"
# Définir la date uniquement
sudo timedatectl set-time "2026-05-20"
# Réactiver NTP
sudo timedatectl set-ntp true
Horloge matérielle (RTC)¶
# Afficher l'heure RTC actuelle
timedatectl status
# Ligne "RTC time"
# Indiquer que la RTC est en heure locale (déconseillé, compatibilité Windows)
sudo timedatectl set-local-rtc true
# Revenir en UTC (recommandé)
sudo timedatectl set-local-rtc false
RTC en heure locale
set-local-rtc true est utile sur des machines dual-boot avec Windows (qui stocke l'heure locale dans la RTC). Sur un serveur Linux pur, toujours laisser la RTC en UTC.
Configuration de timesyncd¶
Le fichier de configuration de systemd-timesyncd est /etc/systemd/timesyncd.conf (ou un fichier dans /etc/systemd/timesyncd.conf.d/).
[Time]
# Serveurs NTP principaux
NTP=0.fr.pool.ntp.org 1.fr.pool.ntp.org 2.fr.pool.ntp.org 3.fr.pool.ntp.org
# Serveurs de secours
FallbackNTP=time.cloudflare.com ntp.ubuntu.com
# Décalage RTC minimal pour mise à jour (défaut : 11min)
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048
# Appliquer la configuration
sudo systemctl restart systemd-timesyncd
# Vérifier le serveur utilisé après redémarrage
timedatectl timesync-status
Diagnostics courants¶
NTP actif mais horloge non synchronisée¶
# Vérifier l'état détaillé
timedatectl timesync-status
# Vérifier les logs de timesyncd
journalctl -u systemd-timesyncd -f
# Vérifier la connectivité vers les serveurs NTP (port 123/UDP)
ss -unp | grep 123
Conflit avec chrony ou ntpd¶
# Si chrony ou ntpd est installé, timesyncd doit être désactivé
systemctl status chronyd ntpd systemd-timesyncd
# Désactiver timesyncd si chrony prend la main
sudo systemctl disable --now systemd-timesyncd
Décalage important après hibernation¶
# Forcer une synchronisation immédiate
sudo systemctl restart systemd-timesyncd
timedatectl timesync-status
# Vérifier "Offset" : doit revenir proche de 0
Options globales utiles¶
| Option | Description |
|---|---|
--no-pager | Désactiver le paginateur |
--no-ask-password | Ne pas demander le mot de passe polkit |
-H <hôte> | Hôte distant (via SSH) |
-M <machine> | Machine / conteneur systemd-nspawn |
-p <prop> | Filtrer sur une propriété (show) |
Voir aussi¶
man timedatectlman systemd-timesyncd.serviceman timesyncd.conf