Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

2.3. Utilisation de la commande hwclock

hwclock est un utilitaire pour accéder à l'horloge matérielle, également appelée horloge RTC (« Real Time Clock »). L'horloge matérielle est indépendante du système d'exploitation utilisé et fonctionne même lorsque l'ordinateur est éteint. Cet utilitaire est utilisé pour afficher l'heure de l'horloge matérielle. hwclock offre aussi la possibilité de compenser pour la dérive systématique de l'horloge matérielle.
L'horloge matérielle stocke les valeurs de l'année, du mois, du jour, de l'heure, des minutes, et des secondes. Celle-ci n'est pas capable de stocker l'heure standard, l'heure locale, ou l'heure UTC (« Coordinated Universal Time »), ni de définir l'heure d'été (« Daylight Saving Time », ou DST).
L'utilitaire hwclock enregistre ses paramètres dans le fichier /etc/adjtime, qui est créé lors du premier changement effectué. Par exemple, lorsque l'heure est définie manuellement ou lorsque l'horloge matérielle est synchronisée avec l'heure système.

Note

Sur Red Hat Enterprise Linux 6, la commande hwclock était exécutée automatiquement à chaque fermeture ou redémarrage du système, mais ceci n'est pas le cas sur Red Hat Enterprise Linux 7. Lorsque l'horloge système est synchronisée par le protocole NTP (« Network Time Protocol ») ou PTP (« Precision Time Protocol »), le noyau synchronise automatiquement l'horloge matérielle avec l'horloge système toutes les 11 minutes.
Pour obtenir des détails sur NTP, veuillez consulter le Chapitre 15, Configurer NTP en utilisant Chrony Suite et le Chapitre 16, Configurer NTP à l'aide de ntpd. Pour obtenir des informations sur PTP, veuillez consulter le Chapitre 17, Configurer PTP en utilisant ptp4l. Pour obtenir des informations sur le paramétrage de l'horloge matérielle après avoir exécuté ntpdate, veuillez consulter la Section 16.18, « Configurer la mise à jour de l'horloge matérielle ».

2.3.1. Afficher l'heure et la date actuelle

Exécuter hwclock sans aucun option de ligne de commande en tant qu'utilisateur root retourne l'heure et la date locale sur la sortie standard.
hwclock
Remarquez qu'utiliser les options --utc ou --localtime avec la commande hwclock ne signifie pas que vous tentiez d'afficher l'heure de l'horloge matérielle en temps UTC ou en temps local. Ces options sont utilisées pour définir l'horloge matérielle de manière à conserver l'heure. L'heure est toujours affichée en heure locale. En outre, l'utilisation des commandes hwclock --utc ou hwclock --local ne modifie pas l'enregistrement dans le fichier /etc/adjtime. Cette commande peut être utile lorsque vous savez que le paramètre enregistré dans /etc/adjtime est incorrect mais que vous ne souhaitez pas modifier ce paramètre. D'autre part, vous pourriez recevoir des informations risquant de vous induire en erreur si vous utilisez une commande de la mauvaise manière. Veuillez consulter la page man de hwclock(8) pour obtenir davantage de détails.

Exemple 2.9. Afficher l'heure et la date actuelle

Pour afficher la date et l'heure locale actuelle à partir de l'horloge matérielle, veuillez exécuter ceci en tant qu'utilisateur root :
~]# hwclock
Tue 15 Apr 2014 04:23:46 PM CEST     -0.329272 seconds
CEST est une abbréviation de fuseau horaire et signifie heure d'été d'Europe centrale (« Central European Summer Time »).
Pour obtenir des informations sur la manière de modifier le fuseau horaire, veuillez consulter la Section 2.1.4, « Modifier le fuseau horaire ».

2.3.2. Paramétrer l'heure et la date

En plus d'afficher l'heure et la date, vous pouvez manuellement paramétrer l'horloge matérielle sur une heure particulière.
Lorsque vous aurez besoin de changer l'heure et la date de l'horloge matérielle, vous pourrez le faire en ajoutant les options --set et --date dans vos spécifications :
hwclock --set --date "dd mmm yyyy HH:MM"
Remplacez dd par un jour (un nombre à deux chiffres), mmm par un mois (une abbréviation à trois lettres), yyyy par une année (nombre à quatre chiffres), HH par l'heure (un nombre à deux chiffres), MM par les minutes (un nombre à deux chiffres).
Au même moment, vous pouvez également définir l'horloge matérielle pour conserver l'heure UTC ou locale en ajoutant l'option --utc ou --localtime, respectivement. Dans ce cas, UTC ou LOCAL est enregistré dans le fichier /etc/adjtime.

Exemple 2.10. Paramétrer l'horloge matérielle à une heure et date en particulier

Si vous souhaitez paramétrer l'heure et la date avec des valeurs particulières, par exemple « 21h17, 21 octobre, 2014 », et laisser l'horloge matérielle réglée sur UTC, veuillez exécuter la commande en tant qu'utilisateur root sous le format suivant :
~]# hwclock --set --date "21 Oct 2014 21:17" --utc

2.3.3. Synchroniser l'heure et la date

Vous pouvez synchroniser l'horloge matérielle et l'heure système actuelle dans les deux directions.
  • Vous pouvez définir l'horloge matérielle sur l'heure système actuelle à l'aide de cette commande :
    hwclock --systohc
    Remarquez que si vous utilisez NTP, l'horloge matérielle est automatiquement synchronisée à l'horloge système toutes les 11 minutes, et cette commande n'est utile que pendant le démarrage pour obtenir une heure système initiale raisonnable.
  • Vous pouvez également définir l'heure système à partir de l'horloge matérielle en utilisant la commande suivante :
    hwclock --hctosys
Lorsque vous synchronisez l'horloge matérielle et l'heure système, vous pouvez également spécifier si vous souhaitez conserver l'horloge matérielle en heure locale ou en heure UTC en ajoutant l'option --utc ou --localtime. De même qu'avec --set, UTC ou LOCAL est enregistré dans le fichier /etc/adjtime.
La commande hwclock --systohc --utc est fonctionnellement similaire à timedatectl set-local-rtc false et la commande hwclock --systohc --local est une alternative à timedatectl set-local-rtc true.

Exemple 2.11. Synchroniser l'horloge matérielle avec l'heure système

Pour définir l'horloge matérielle sur l'heure actuelle du système tout en gardant l'horloge matérielle en heure locale, veuillez exécuter la commande suivante en tant qu'utilisateur root :
~]# hwclock --systohc --localtime
Pour éviter les problèmes liés aux fuseaux horaires et aux changements d'heure d'été, il recommandé de garder l'horloge matérielle en heure UTC. L'Exemple 2.11, « Synchroniser l'horloge matérielle avec l'heure système » affiché est utile, par exemple pour les cas de démarrages multiples avec un système Windows, qui suppose que l'horloge matérielle soit exécutée en heure locale par défaut, et que tous les autres systèmes doivent s'y accommoder en utilisant également l'heure locale. Cela peut également être utile avec une machine virtuelle ; si l'horloge matérielle virtuelle fournie par l'hôte est exécutée en heure locale, le système invité devra être configuré de manière à utiliser l'heure locale aussi.