LINUX:Date et heure


retour au menu Divers


But

Le réglage de la date et de l'heure est important et pour certaines applications, il est impératif qu'elles soient synchrones entre les différentes machines. Par exemple, l'application Pacemaker que nous avons déjà rencontrée. Nous allons passer en revue quelques points importants à configurer.


Service Chrony

Historique

Anciennement on réglait la date et l'heure dans le BIOS et c'est elle qui faisait foi. Cette configuration existe toujours et permet une mise à l'heure grossière. Actuellement on utilise l'heure donnée par un ensemble de serveurs de temps mondiaux qui servent de référence. Par ce moyen, on est sûr que toutes nos machines ont la même heure et la bonne.

Anciennement on utilisait le service NTP qui travaillait comme serveur et client mais sous Fedora, le service Chrony est préféré. Il est installé d'office.


Configuration

Le fichier de configuration est "/etc/chrony.conf" et si nécessaire "/etc/chrony.key".

Normalement, il n'y a rien à faire. Il faut par contre vérifier de temps à autre s'il y a une nouvelle version de ce fichier ajoutée lors des mises à jour. Si le fichier "/etc/chrony.conf.rpmnew" est présent, après vérification, remplacez le fichier "/etc/chrony.conf" par celui-ci.

Assurez-vous que l'option "pool" en début de fichier est bien configurée surtout si vous utilisez un adressage IP fixe. Dans mon cas, elle se présente comme suit:


pool 2.fedora.pool.ntp.org iburst

Elle définit un ensemble de serveurs de temps de référence.


Activation et lancement

Pour activer et lancer ce service, on exécute les commandes suivants classiques pour les services:

systemctl enable chronyd.service
systemctl start chronyd.service

et pour le relancer:

systemctl restart chronyd.service

Il est normalement activé dès l'installation.


Firewall

Cette récupération de l'heure nécessite un accès en sortie vers Internet. Il faut que cet accès soit ouvert dans notre Firewall:

-A OUTPUT -p tcp -m tcp --dport 123 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 123 -j ACCEPT


Vérification

La commande suivante permet de vérifier le bon fonctionnement du service:

chronyc sources -a -v

qui donne par exemple:


  .-- 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
===============================================================================
^* ntp.ulyssis.student.kule>     2   6   377    48   -279us[ -338us] +/- 8158us
^- webserver.discosmash.com      3   6   377    47  +1358us[+1358us] +/-   68ms
^- dns-rec-2-brudie.belnet.>     2   6   377    48   +164us[ +105us] +/-   44ms
^- ntp.rack66.net                2   6   377    48   +147us[ +147us] +/-   37ms

Ces quatre dernières lignes nous l'assurent; quatre serveurs de temps sont comparés.


Réglages

C'est bien de récupérer l'heure mais il faut que le paramétrage du système soit adéquat pour être pleinement fonctionnel.


Statut

La commande suivante permet d'afficher quelques informations utiles:

timedatectl status

qui donne par exemple:


               Local time: lun 2023-05-22 12:31:16 CEST
           Universal time: lun 2023-05-22 10:31:16 UTC
                 RTC time: lun 2023-05-22 10:31:16
                Time zone: Europe/Brussels (CEST, +0200)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no


Time Zone

Je suis en Belgique; j'utilise donc le fuseau horaire de Bruxelles en Europe (4ème ligne). Suivant l'heure affichée, on remarque que nous sommes en horaire d'été avec deux heures de décalage (CEST) (première ligne) (CEST, +0200) (4ème ligne) par rapport à l'heure de référence (UTC) (seconde ligne).


Si ce n'est pas le cas, il faut adapter ce fuseau horaire.

On peut lister les différentes zones de temps disponibles et leurs noms avec la commande suivante:

timedatectl list-timezones | grep "Europe/Brussels"

qui donne après filtrage:


Europe/Brussels

Il puise cette liste en consultant l'arborescence des fichiers présents sous le répertoire "/usr/share/zoneinfo".


On adapte ce fuseau horaire avec la commande:

timedatectl set-timezone Europe/Brussels

Cette opération met à jour le lien symbolique entre le fichier "/etc/localtime" et le fichier de référence de notre fuseau horaire.

On peut le vérifier par le moyen suivant:

ls -al /etc/localtime

qui donne:


lrwxrwxrwx. 1 root root 37  5 aoû  2020 /etc/localtime -> ../usr/share/zoneinfo/Europe/Brussels

Au lieu d'utiliser la commande "timedatectl", on peut adapter directement ce lien symbolique.


Synchronisation

La 5ème ligne:


System clock synchronized: yes

nous renseigne que le service Chrony permet la synchronisation des horloges. Si ce n'est pas le cas, il faut vérifier le bon fonctionnement de ce service.


NTP

A la 6ème ligne, on constate que le service Chrony est utilisé.

Si ce n'est pas le cas ("NTP service: inactive"), on exécute la commande suivante:

timedatectl set-ntp on


RTC

La dernière ligne:


RTC in local TZ: no

nous informe que nous nous référons à l'heure universelle et non matérielle. Si on se réfère à l'heure matérielle, cette situation n'est pas pleinement supportée.

Dans le cas contraire ("yes"), il faut utiliser la commande suivant pour la désactiver:

timedatectl set-local-rtc 0

A la suite de ce changement, il est conseillé d'effectuer une resynchronisation:

timedatectl --adjust-system-clock

Cette opération modifie la troisième ligne du fichier "/etc/adjtime" dont voici le contenu:


0.0 0 0.0
0
UTC




retour au menu Divers