Bloc-note 'Heure et temps'
21 octobre, 2008 - 16:14 | Ulhume | Système Note

Bloc-Note sur la gestion du temps sous Linux

Changer de fuseau horaire

Pour passer l'horloge au fuseau de Paris :

# on vire l'ancien fuseau
root#rm -rf /etc/localtime
 
# et on recopie le nouveauu
root#ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime

Horloge interne et horloge système

Il y a deux horloges sous Linux. L'une matérielle (interne), qui reste en marche lorsqu'elle PC est éteint, l'autre logicielle (système) gérée par Linux. C'est cette dernière qui est utilisée par toutes les applications. Au démarrage, Linux lit l'horloge interne et la synchronise avec l'horloge logiciel. A l'arrêt, c'est l'inverse qui est effectué. Les commande suivantes permettent :

# D'afficher l'état de l'horloge interne
hwclock --show
# Horloge interne -> système
hwclock --hctosys
# Horloge système -> interne
hwclock --systohc

Synchronisation avec un serveur de temps (ntp)

L'idéal pour être à l'heure est de la demander à un serveur qui sait de quoi il parle. Il y'en a de nombreux de disponible, autant en profiter. A ce stade, deux solutions, soit utiliser le service ntpd, soit faire une tambouille à la main. La solution n°1 étant largement documentée, passons à un petit script. L'avantage étant qu'il fait juste ce que l'on veut, ne réside pas en mémoire, ne prends pas de ressources et surtout n'ouvre pas de ports (même s'il est possible d'obtenir ce résultat avec NTPD en plaçant dans /etc/ntp.con l'option restrict default ignore.

La solution réside dans la commande ntpdate, son rôle est simplement de mettre à jour l'horloge système avec le serveur. Ensuite la commande vue plus haut hwclock permet de synchroniser cela avec l'horloge interne. Enfin un ajout dans la table cron permet d'effectuer ce travail par exemple tous les jours pour éviter les dérives éventuelles.

#! /bin/sh
/usr/sbin/ntpdate -s -b 1.za.pool.ntp.org
if [ $? != 0 ] ; then
        echo "Erreur lors de la synchonisation de l'heure" > /dev/stderr
else
        /sbin/hwclock --systohc --utc
fi

Ce bout de code placé par exemple en /sbin/sync-clock.sh il suffit d'appliquer les commande suivantes pour qu'elle soit effectuée tous les jours :

urpmi ntp-client
chmod +x /sbin/sync-clock.sh
ln -s /sbin/sync-clock.sh /etc/cron.daily

Commentaires

Malic, le 20 juin, 2007 - 17:55

ntpdate est généralement lancé de toute façon au démarrage des machines avec le kit ntpd (fichier /etc/ntp/step-sticker, je crois) car ntpd ne sachant pas compenser (i.e remettre à l'heure) un ecart trop grand, il est nécessaire de faire une première remise à l'heure avant de passer la main à ntpd.

ntpd n'est vraiment nécessaire que lorsque vous avez besoin d'avoir plusieurs machines avec une horloge à l'unisson.

Sinon pour un usage au quotidien, ntpdate suffit largement, voire même avec KDE, il me semble qu'il y a une option dans l'horloge en bas à droit pour cette usage ;-)

Ulhume, le 20 juin, 2007 - 18:44

Pour ce qui est de KDE c'est vrai mais je n'utilise généralement cela que sur des serveurs. Et en effet ntpdate est lancé avec ntpd mais cela implique de "soucis". 1/ comme tu le soulignes, ntpd n'a pas d'intérêt si l'on ne souhaite pas donner le LA à un parc entier 2/ J'ai pas mal de serveurs avec une dérive de temps qui implique une remise à l'heure régulière, d'où le script CRON, là pas de soucis.

tuxce, le 21 octobre, 2008 - 17:50

Complément d'infos:
debian et compatibles, si je me rappelle bien synchronisent le temps à chaque fois qu'une interface réseau est montée (si le paquet ntpdate est installé)
et des distribs genre archlinux fournissent un "script de démarrage" pour ntpdate qu'il suffit de traiter de la même façon qu'un daemon sauf qu'il ne fait que mettre à jour et quitte.

mais c'est clair que ce n'est pas suffisant pour un serveur avec un uptime élevé et une dérive continue.

Ulhume, le 21 octobre, 2008 - 17:54

@tuxce ben sur ce coup là, debian est clairement plus intelligent que Mandriva. Car avec leur système de "service", tu as l'air malin avec un portable qui n'a pas le net, genre en clientelle, qui reste bloqué 10 minutes en cherchant un serveur NTP sur un réseau qui n'existe pas...

Yannick, le 21 octobre, 2008 - 20:17

Merci pour ces explications sur l'heure matérielle..etc..

Par contre, attention a ntpdate qui change l'heure "trop brusquement" pour certains démons tournant sur la machine (voir le lien ci dessus)

Ulhume, le 21 octobre, 2008 - 20:34

@Yannick intéressant, merci.

nicolargo, le 21 octobre, 2008 - 22:15

Super, merci pour le billet.
Pour ceux que cela interesse j'ai écrit il y a quelques jours un tutu pour installer un serveur NTP (basée sur NTPd) sous GNU/Linux.

http://blog.nicolargo.com/2008/10/installation-dun-serveur-ntp.html
A+

Ulhume, le 21 octobre, 2008 - 22:18

@nicolargo yep, je l'avais lu et j'ai même voté pour, ce qui est assez rare pour être souligé ;-) Pratique pour éviter de faire appel à un serveur externe sur un grand réseau !

PS: j'ai fusionné les deux commentaires.

Ulhume, le 21 octobre, 2008 - 22:22

@nicolargo je l'ai ajouté dans le billet.

Axone, le 21 octobre, 2008 - 22:52

Il y a longtemps, j'avais un article dans GLMF il me semble sur NTP, et j'en ai retenu qu'il ne fallait surtout pas lancer une demande de mise à l'heure à l'aide de Cron. Car bien souvent on fait cela à heure fixe (quotidiennement voir toutes les heures pour certains). Et comme tout le monde à la même heure, il en résulte une demande très forte de mise à l'heure au même moment. Par exemple 13h59m59s c'est calme, puis arrive 14h00m00s c'est la saturation.
La bonne utilisation était de laisser Le démon ntpd s'occuper de tout. Il allait de lui même prendre contact avec les serveurs ntp. Il pouvait même corriger la dérive existante (jusqu'à une vingtaine de minutes il me semble) sur plusieurs jours sans perturber aucun service par un saut d'heure. Cette correction se faisait en augmentant ou diminuant légèrement la durée de chaque seconde.

Ulhume, le 21 octobre, 2008 - 23:09

@Axone Ah oui c'est pas idiot du tout ça !! J'ai modifié pour utiliser plutôt une crontab qui se déclenche à 23:17 (ou toute heure de votre choix), et comme cela, toujours pas de démon :-)

nyquist, le 22 octobre, 2008 - 15:19

Merci pour ton post et spécialement la partie sur hwclock, outil que je ne connaissais pas du tout!!
ça m'a permis de mettre à jour l'heure machine et j'espère qu'au prochain reboot je n'aurait plus l'erreur "adjtime failed: Invalid argument" dû à la trop grande différence de temps!

Ulhume, le 22 octobre, 2008 - 19:36

@nyquist ravi que cela puisse t'aide. Ceci dit, tu as normalement un service qui fait très exactement ce travail de sychronisation au moment du shutdown.

Dab, le 27 octobre, 2008 - 00:59

Petite remarque, il semble qu'il manque un paragraphe traitant de tzdata, celui qui nous a permis de changer d'heure la nuit dernière sans pourtant disposer de connexion Internet. Sinon comme toujours, un plaisir de te lire ... je me répète là non ?

Ulhume, le 28 octobre, 2008 - 23:10

@Dab je ne connais pas tzdata pour être honnête :)

Poster un nouveau commentaire

Si vous avez détecté une erreur, coquille ou bêtises du même ordre, merci de plutôt passer par le formulaire de contact
Pour vous abonner au flux des commentaires sur cet article, clickez ici.
Pour répondre à quelqu'un, utilisez plutôt le lien répondre qui se trouve en haut (ou en bas) à gauche de son commentaire.
Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement. Si vous avez un compte gravatar, l'utilisez pour afficher votre avatar.
  • To highlight piece of code, just surround them with <code type="language"> Your code &tl;/code>>. Language can be java,c++,bash,etc... Everything Geshi support.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockquote> <div> <p> <br>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Every instance of custom tags in the input text will be replaced with a specific tool shortcut.

Plus d'informations sur les options de formatage

Êtes-vous humain ?
Cette question est là pour déterminer si vous êtes humain ou pas...