Forum Linux.général ntp et Required-Start

Posté par . Licence CC by-sa
Tags :
1
12
déc.
2013

Bonjour.

J'aimerais démarrer un service en étant sûr que l'heure système est correcte. (En plus, la cible est un Raspberry Pi, ça perd l'heure quand ça s'éteint.)

Suffit-il d'écrire ceci dans le script d'init ?

# Required-Start: networking ntp

  • Que se passe-t-il si le démarrage du premier service échoue ? Par exemple ici si ntp ne démarre pas. Est-ce que mon service est lancé quand même après l'échec de ntp ou pas du tout ?

  • Si networking et ntp se lancent mais qu'on n'a pas d'accès réseau, ou que le serveur ntp ne répond pas ?

  • Par ailleurs, il me semblait avoir lu que lorsque l'heure système est incorrecte, le recalage n'est pas instantané mais progressif, pour éviter des problèmes. Si c'est le cas, alors on peut avoir ntp lancé et l'heure qui est temporairement incorrecte. Je ne retrouve pas la source mais c'est peut-être une confusion avec l'histoire des secondes intercalaires.

  • # ntpdate

    Posté par (page perso) . Évalué à 2. Dernière modification le 12/12/13 à 16:53.

    Pour les questions sur le démarage, je ne peux pas te répondre.
    Par contre pour ntp :
    - Oui, si l'heure est incorrecte, le recalage se fait progressivement pour éviter des "sauts temporels"
    - par conséquent, il existe généralement (en tout cas dans les bonnes distributions) un service ntpdate qui force l'heure au démarrage http://packages.debian.org/fr/wheezy/ntpdate par exemple
    - si ntp ou ntpdate) ne peut pas joindre un serveur, il prendra l'horloge locale comme référence.

  • # Méthode à la mano

    Posté par (page perso) . Évalué à 3.

    Ne démarrer ton service que si NTP est lancé ne permet pas d'affirmer que la machine est à l'heure.
    S'il n'y a pas de réseau, NTP est lancé mais n'a rien pu faire.

    Il vaut donc mieux attendre que la date/heure ne soit plus 01/01/1970 ou quelque chose du genre.
    Ou mieux, scruter un journal ou la sortie de ntpdate pour s'assurer qu'un serveur de temps a bien été contacté. Puis s'assurer que la date/heure a bien été modifiée.

    Il te faut donc que ton script d'init contienne :

    /chemin/script_d_attente &
    exit 0

    Et ton script d'attente va poireauter jusqu'à ce que l'heure soit ok, puis lancer ton « vrai » service.

    Ensuite il faudrait en principe s'assurer que l'heure reste correcte. Si tu n'as pas besoin d'une précision d'enfer tu peux estimer que même en cas de coupure réseau l'heure restera ok.

    • [^] # Re: Méthode à la mano

      Posté par . Évalué à 2.

      Merci pour vos réponses.

      En fait, au redémarrage, je crois que le Pi est à l'heure à laquelle il a été éteint, pas au 1er janvier 1970. Je l'ai lu, pas vérifié. Donc je ne peux pas juste attendre "date > 1er jan 2000", par exemple, pour être sûr que l'heure est bonne.

      Mais je pourrais attendre une sortie de ntpd ou ntpdate quelque part avant de lancer le service, oui. Je dois chercher une fonction à utiliser dans le script d'attente.

      Effectivement, la précision requise est de l'ordre de la seconde, donc si le réseau se coupe, l'heure système ne va pas se décaler significativement, et ce n'est pas un problème.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.