Paramétrer l'horloge sous Linux

Gazette Linux n°108 — Novembre 2004

William Park

Article paru dans le n°108 de la Gazette Linux de novembre 2004.

Traduction française par Emmanuel Araman .

Relecture de la traduction française par Joëlle Cornavin .

Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières
1. Arrière-plan
2. rc.clock

1. Arrière-plan

Il y a trois protocoles permettant de gérer le temps : NTP (port 123), Time (port 37) et Daytime (port 13). Si vous vous connectez à l'Internet périodiquement, une synchronisation lorsque vous établissez la connexion ou à partir de crontab est très suffisante. Ceci s'applique également à la plupart des machines Linux, au domicile ou au travail, même si elles sont connectées en permanence. Voici un bref tutoriel sur la manière de synchroniser votre horloge à l'aide de ces trois protocoles.

En premier lieu, il vous faut des serveurs de référence pour obtenir l'heure. Au Canada :

Aux États-Unis :

où le numéro entre parenthèses après NTP indique le niveau de couche du serveur. Les serveurs NTP primaires (couche 1) sont réservés à la synchronisation des serveurs secondaires (couche  2) et ne sont pas destinés aux utilisateurs finaux. Bien sûr, vous devez essayer d'employer les serveurs proches de chez vous. [1]

L'heure que vous voyez affichée est l'heure de l'horloge CMOS, corrigée de la dérive de /etc/adjtime. Par conséquent, les commandes suivantes :



hwclock --adjust
hwclock --hctosys

devront être exécutées au démarrage. Une fois la machine active, il est possible de mettre à l'heure l'horloge système au moyen de l'une des quatre méthodes suivantes :

  1. NTP (port 123)

    

ntpdate time.nrc.ca time.apple.com time.windows.com
    
    

  2. Time (port 37)

    

netdate time.nrc.ca time.nist.gov time-nw.nist.gov
    
    

  3. Daytime (port 13)

    

set -- `nc time.nist.gov 13`
    date -u --set="$2 $3"
    
    

  4. Horloge murale (mise à jour manuelle)

    

date --set="16:24:30"
    
    

À l'arrêt de la machine, configurez l'horloge CMOS avec :



hwclock --systohc

qui met à jour /etc/adjtime


2. rc.clock

Vous pouvez encapsuler tout cela dans /etc/rc.d/rc.clock, avec le contenu suivant :


#! /bin/sh

[ -x /sbin/hwclock ] || exit 1

case $1 in 
    start)
        echo "Positionnement de l'heure système à partir de l'horloge matérielle."
        /sbin/hwclock --adjust
        /sbin/hwclock --hctosys
        ;;
    stop)
        echo "Enregistrement de l'heure système dans l'horloge matérielle."
        /sbin/hwclock --systohc
        ;;
    sync)
        /usr/sbin/ntpdate time.nrc.ca time.apple.com time.windows.com
        ;;
    *)
        echo "Usage: $0 {start|stop|sync}"
        ;;
esac

Ensuite, vous pouvez appeler :

J'ai appris Unix avec le shell Bourne originel. Et, après une expédition dans la jungle des langages, je suis revenu au shell. Dernièrement, j'ai contribué à de nouvelles fonctionnalités de Bash, rendant la monnaie de leur pièce aux autres langages de scriptage. Slackware est ma distribution favorite depuis le début, parce que je peux saisir au clavier. Dans ma boite à outils, j'ai Vim, Bash, Mutt, Tin, Tex/Latex, Python, Awk et Sed. Même ma ligne de commande est en mode Vi.

Notes

[1]

Pour la France, vous trouverez une liste complète des serveurs NTP sur le site http://www.cru.fr/NTP/serveurs_francais.html. Vous pouvez aussi utiliser un serveur au hasard grâce au projet pool.ntp.org via les adresses de serveurs 0.fr.pool.ntp.org, 1.fr.pool.ntp.org...