Maintenir l'heure système précise avec timedatectl et chronyd
Dans cette étape, vous apprendrez à maintenir une heure système précise à l'aide de la commande timedatectl et à comprendre le rôle du service chronyd. Une gestion précise de l'heure est cruciale pour la journalisation, la sécurité et de nombreux services réseau.
1. Utilisation de timedatectl pour gérer l'heure système et les fuseaux horaires :
La commande timedatectl fournit une vue d'ensemble des paramètres système actuels liés à l'heure, y compris l'heure locale, l'heure universelle (UTC), l'heure RTC, le fuseau horaire et l'état de synchronisation NTP.
Vérifions les paramètres d'heure actuels de votre système :
timedatectl
Vous devriez voir une sortie similaire à celle-ci (l'heure et la date exactes refléteront l'heure actuelle de votre système) :
Local time: Sun 2025-06-15 21:46:11 EDT
Universal time: Mon 2025-06-16 01:46:11 UTC
RTC time: Mon 2025-06-16 01:46:10
Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Vous pouvez lister tous les fuseaux horaires disponibles en utilisant l'option list-timezones :
timedatectl list-timezones | less
Appuyez sur q pour quitter less. Les fuseaux horaires sont nommés en fonction de la base de données des fuseaux horaires de l'Internet Assigned Numbers Authority (IANA), généralement par continent/océan, puis par la plus grande ville.
Pour modifier le fuseau horaire du système, vous utilisez l'option set-timezone. Par exemple, modifions le fuseau horaire en America/Phoenix. Vous avez besoin des privilèges sudo pour cela.
sudo timedatectl set-timezone America/Phoenix
Maintenant, vérifiez le changement :
timedatectl
Vous devriez voir le fuseau horaire mis à jour en America/Phoenix.
Vous pouvez également définir manuellement l'heure actuelle du système à l'aide de l'option set-time. Le format est "AAAA-MM-JJ hh:mm:ss", mais vous pouvez omettre la date ou l'heure. Définissons l'heure sur 09:00:00 (pour la date actuelle).
sudo timedatectl set-time 09:00:00
Vérifiez le changement d'heure :
timedatectl
Enfin, l'option set-ntp active ou désactive la synchronisation NTP pour le réglage automatique de l'heure. Elle prend true ou false comme argument. Désactivons la synchronisation NTP pendant un moment (nous la réactiverons plus tard).
sudo timedatectl set-ntp false
Vérifiez l'état du service NTP :
timedatectl
Vous devriez voir NTP service: inactive.
2. Comprendre et configurer le service chronyd :
Le service chronyd est un daemon qui maintient la précision de l'horloge temps réel (RTC) du système en la synchronisant avec les serveurs Network Time Protocol (NTP). C'est le client NTP par défaut dans Red Hat Enterprise Linux.
Le fichier de configuration pour chronyd est /etc/chrony.conf. Par défaut, il utilise des serveurs NTP publics. Dans un scénario réel, vous pourriez le configurer pour utiliser des serveurs NTP internes.
Visualisons le fichier chrony.conf par défaut.
cat /etc/chrony.conf
Vous verrez des lignes commençant par server ou pool, qui définissent les sources NTP. L'option iburst est recommandée car elle prend quatre mesures rapidement pour une synchronisation initiale plus précise.
Le stratum d'une source de temps NTP indique sa qualité. Un stratum 0 est une horloge de référence, stratum 1 est directement connecté à une horloge de référence, et stratum 2 se synchronise à partir d'un serveur stratum 1.
Étant donné que systemctl n'est pas disponible dans cet environnement de conteneur, nous ne pouvons pas redémarrer directement chronyd pour appliquer les modifications de configuration. Cependant, nous pouvons simuler la modification de configuration en modifiant le fichier.
Réactivons la synchronisation NTP en utilisant timedatectl.
sudo timedatectl set-ntp true
Vérifiez à nouveau l'état du service NTP :
timedatectl
Vous devriez voir NTP service: active.
La commande chronyc agit comme un client du service chronyd. Vous pouvez l'utiliser pour surveiller l'état de la synchronisation. La commande chronyc sources affiche les sources de temps actuelles et leur état de synchronisation.
chronyc sources -v
La sortie affichera des détails sur les sources NTP. L'astérisque * dans le champ S (Source state) indique la source avec laquelle chronyd est actuellement synchronisé.
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 100.100.61.88 1 5 377 16 +1824us[+2180us] +/- 85ms
...output omitted...
Cette sortie confirme que votre système synchronise activement son heure avec un serveur NTP.