Deux types d'horloge sont présentes sur un système :
une horloge matérielle qui dispose de sa propre batterie et continue de fonctionner même lorsque l'alimentation électrique du PC (secteur et batterie) est coupée. Cette horloge est capable de fournir "en continu" la date et l'heure, mais est peu précise sur le moyen - long terme.
une horloge système, qui s'initialise à chaque démarrage sur l'horloge matérielle, puis fonctionne ensuite indépendamment de celle-ci
Des dispositifs annexes permettent
la prise en compte du fuseau horaire local et des décalages horaires
la mise à l'heure "précise" en utilisant des serveurs de temps internet
la synchronisation des horloges matériels et systèmes
Quelques abréviations et traductions
Le fuseau horaire est sélectionné lors de l'installation. Pour afficher le fuseau horaire :
$ cat /etc/timezone
Europe/Paris
La commande zdump associée au fichier localtime affiche le décalage horaire par rapport à UTC en fonction du fuseau horaire et du passage heure d'été / heure d'hiver :
$ zdump -v /etc/localtime | grep 2016
/etc/localtime Sun Mar 27 00:59:59 2016 UT = Sun Mar 27 01:59:59 2016 CET isdst=0 gmtoff=3600
/etc/localtime Sun Mar 27 01:00:00 2016 UT = Sun Mar 27 03:00:00 2016 CEST isdst=1 gmtoff=7200
/etc/localtime Sun Oct 30 00:59:59 2016 UT = Sun Oct 30 02:59:59 2016 CEST isdst=1 gmtoff=7200
/etc/localtime Sun Oct 30 01:00:00 2016 UT = Sun Oct 30 02:00:00 2016 CET isdst=0 gmtoff=3600
Dans l'exemple ci-dessus, les lignes qui précédent indiquent que, pour le fuseau horaire défini dans /etc/timezone (Europe/Paris)
l'heure locale est en avance de 2 heures en hiver et 3 heures en été sur l'heure UTC.
le passage de l'heure d'hiver à l'heure d'été a lieu le 27 mars à 3 heures du matin, ....
Note : Les heures d'hiver sont indiquées par l'abréviation CET, les heures d'été sont indiquées par l'abréviation CEST
La commande date affiche l'heure système, celle-ci prend en compte de façon automatique le fuseau horaire et le passage heure d'été / heure d'hiver :
$ date
lundi 6 juin 2016, 20:03:46 (UTC+0200)
A partir de l'exemple ci-dessus
l'heure système (heure locale si le fuseau horaire est correctement réglé) est 20:03
le décalage par rapport à UTC est de + deux heures
L'heure matérielle est également affichée en heure locale (c'est à dire en prenant en compte le fuseau horaire et l'heure d'été)
# hwclock
lun. 06 juin 2016 20:03:27 CEST -0.500873 secondes
Elle peut donc être directement comparée à l'heure système.
Le paquet tzdata permet de définir (redéfinir) le fuseau horaire à partir de la localisation géographique
# dpkg-reconfigure tzdata
Current default time zone: 'Europe/Paris'
Local time is now: Fri Jun 3 20:13:29 CEST 2016.
Universal Time is now: Fri Jun 3 18:13:29 UTC 2016.
La commande affiche ensuite, la date et l'heure exprimées en temps coordonné universel (UTC) et en temps local. Dans le cas présent, il est 20h13 heure locale prenant en compte l'heure d'été (CEST).
L'horloge système peut-être réglée :
manuellement, en entrant les informations au clavier
automatiquement, par synchronisation sur des serveurs ntp
par synchronisation sur l'horloge matérielle
Entrer l'heure et la date avec la commande date et l'option -s (set). De nombreux formats de dates et heures sont possibles.
# date –s 2016-06-18
Les heures peuvent être saisies au format hh:mm:ss, par exemple 23:14:00 pour 23 heures 14 minutes 00 secondes
# date –s 13:08:00
La date et l'heure peuvent être saisies en une seule ligne de commande :
# date -s "2014-03-31 23:14:00"
ntpdate permet de synchroniser l'heure système sur des serveurs de temps internet de haute précision.
Installation
Installer le paquet ntpdate
# aptitude install ntpdate
Paramétrage
La commande ntpdate-debian permet de synchroniser l'horloge système sur des serveurs internet ntp en utilisant le pool de serveurs défini dans /etc/default/ntpdate.
Modifier le fichier /etc/default/ntpdate pour indiquer d'utiliser les serveurs de /etc/default/ntpdate, plutôt que ceux de /etc/ntp.conf. Pour cela, remplacer yes par no dans la ligne NTPDATE_USE_NTP_CONF=yes
# sed -i 's/NTPDATE_USE_NTP_CONF=yes/NTPDATE_USE_NTP_CONF=no/' /etc/default/ntpdate
Utilisation "manuelle"
# ntpdate-debian
6 Jan 10:35:21 ntpdate[4861]: adjust time server 62.210.72.164 offset 0.013295 sec
Utilisation "automatique"
Une synchronisation est effectuée automatiquement à chaque démarrage de la machine (sous réserve de disponibilité d'un accès à internet).
L'option ---hctosys (-s), permet de régler l'horloge matérielle (hardware clock) sur l'horloge système
# hwclock --hctosys
L'horloge matérielle peut-être paramétrée pour fonctionner soit en heure UTC, soit en heure locale. Ce paramétrage est défini à l'installation, mais peut-être modifiée ensuite. Pour raisons de compatibilité, utiliser le réglage heure locale si un système Windows est également présent sur la machine, sinon utiliser le réglage UTC. La définition s'effectue avec les options --localtime et --utc. Par exemple,
# hwclock --utc
Ce paramétrage peut-être effectué indépendamment ou en combinaison avec des commandes de mise à jour.
L'horloge matérielle peut-être réglée
manuellement, en entrant les informations au clavier
par synchronisation sur l'horloge système
Entrer l'heure et la date avec la commande hwclock et l'option --set --date="xxxxxxxxxxxxxxxxxx". Par exemple :
# hwclock --set --date="2014-03-31 23:14:00" 2.3.3 Réglage de l'heure - Synchronisation sur l'horloge système
L'option --systohc ou -w permet de synchroniser l'horloge matérielle sur l'horloge système
# hwclock --systohc --utc