Synchroniser l'heure

Assistance concernant Linux Mint
Répondre
Avatar du membre
Markco
Messages : 282
Enregistré le : ven. 23 sept. 2016 23:22

Synchroniser l'heure

Message par Markco »

Bonjour,

Je voudrais synchroniser l'heure à interval régulier par exemple toutes les 2 heures. J'ai donc installer gnome-schedeler et j'ai entré cette commande :

Code : Tout sélectionner

/usr/sbin/ntpdate -s ntp-p1.obspm.fr
mais lorsque je regarde les logs, je trouve ceci

Code : Tout sélectionner

crontab[24743]: (marco) LIST (marco)
ntpdate[24760]: bind() fails: Permission denied
crontab[24762]: (marco) LIST (marco)
Ce qui veut dire que la commande ne s'éxucute pas et donc comment résoudre ce problème.

Merci
Asus N76VJ Portable, 4x Intel(R), Core(TM) i5-3230M CPU @ 2.60GHz, 3929MB,GeForce GT 635M/PCIe/SSE2, 4.13.0-16-generic x86_64, Linux Mint 18.2 Cinnamon 3.4.6 en dual avec windows 10 1607.

Alarc'h
Messages : 25
Enregistré le : mer. 22 févr. 2017 22:48

Re: Synchroniser l'heure

Message par Alarc'h »

Markco a écrit :Bonjour,

Je voudrais synchroniser l'heure à interval régulier par exemple toutes les 2 heures. J'ai donc installer gnome-schedeler et j'ai entré cette commande :

Code : Tout sélectionner

/usr/sbin/ntpdate -s ntp-p1.obspm.fr
[...]
Merci
Bonjour,

Ta connexion Internet est-elle intermittente ? Es-tu rarement connecté ?

Si ce n'est pas le cas, pour résoudre ton problème, la solution la plus élégante et la plus efficace est d'utiliser le paquet ntp :

Code : Tout sélectionner

sudo apt-get install ntp
Dans ce cas ntpdate est éventuellement utile à ce pourquoi il est fait, une mise à l'heure grossière avant de passer la main au serveur de temps ntp. La page man de ntpdate dit bien :
ntpdate can be run manually as necessary to set the host clock, or it can be run from the host startup script to set the clock at boot time. This is useful in some cases to set the clock initially before starting the NTP daemon ntpd. It is also possible to run ntpdate from a cron script. However, it is important to note that ntpdate with contrived cron scripts is no substitute for the NTP daemon, which uses sophisticated algorithms to maximize accuracy and reliability while minimizing resource use. Finally, since ntpdate does not discipline the host clock frequency as does ntpd, the accuracy using ntpdate is limited.
Ce qui peut se traduire par : "ntpdate peut être lancé manuellement si nécessaire pour régler l'horloge de la machine, ou il peut être lancé au démarrage de la machine pour régler l'heure au moment du démarrage. Cela est parfois utile pour régler l'horloge avant le lancement du démon NTP. Il est également possible de lancer ntp depuis un script cron. Cependant il est important de noter que ntpdate lancé via des scripts cron maison ne remplace pas le démon NTP, qui utilise des algorithmes sophistiqués pour donner une précision et un fiabilité maximales tout en utilisant le moins de ressources machine possible. Et enfin, puisque ntpdate ne contrôle pas la fréquence d'horloge comme le fait ntp, la précision en utilisant ntpdate est limitée."

Il y a une quinzaine d'années la configuration de NTP pouvait présenter quelques problèmes, mais depuis longtemps maintenant la configuration fournie par exemple par Debian et dont ont hérité tous ses descendants (donc xUbuntu, Mint et consors) peut-être utilisée telle que je dirais par 99,9% des utilisateurs.

Toute la configuration tient dans le fichier

Code : Tout sélectionner

/etc/ntp.conf
Il fait appel à une liste de serveurs de temps choisis par Debian, qui fonctionnent très bien. Si tu veux juste maintenir ton PC à l'heure précise (ce qui est très important dès que tu es en réseau et dans tous les cas en cas de sauvegarde de données) tu laisses le fichier tel que (mais il est toujours instructif d'y jeter un coup d'oeil bien entendu, voir d'essayer de comprendre un peu ce qu'il contient). Il existe des concurrents comme openntpd, mais pour débuter je te conseille ntpd fourni par le paquet ntp sous Debian et consors. Il a été créé à l'origine par l'inventeur de NTP qui est un protocole très sioux d'un grand raffinement (même si pour ton usage tu as le droit de t'en tamponner le coquillard !).

NTP démarre avec ton ordinateur et en quelques minutes sélectionne un serveur (qui répond le plus vite) avec lequel il se synchronise et des serveurs "candidats" qui sont aptes à prendre son relais si la connexion avec lui se dégrade. NTP sert à synchroniser des laboratoires de métrologie, donc il n'aura aucun mal à garder ton petit PC juste à la seconde ;)

Tu peux par curiosité dans une console regarder le processus se faire avec la commande :

Code : Tout sélectionner

ntpq -p
Tu peux même avec la commande watch regarder le tableau se remplir :

Code : Tout sélectionner

watch ntpq -p
Tu verras un tableau du genre :

Code : Tout sélectionner

ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.001
 1.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.001
 2.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.001
 3.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.001
 ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000    0.000   0.001
+leeto.nicolbola 145.238.203.14   2 u   82  256  373   62.581    5.337  30.273
+seedbox.netkoli 163.172.61.210   3 u   34  256  377   52.757   -1.152  65.610
*ntp.tuxfamily.n 138.96.64.10     2 u  161  256  377   61.342   -2.449  77.978
+195.154.79.192  191.244.22.106   3 u   95  256  377   52.032   -1.900  55.679
+voyageurs.rail. 131.188.3.223    2 u   78  256  377   51.618    2.077   8.035
La synchro est achevée quand un des serveurs atteint un "reach" de 377 (ça ressemble aux droits unix un peu c'est de l'octal). Pour les autres options c'est plus technique tu trouveras de la doc en anglais sur le net si ça t'intéresse.

En pratique tu vois la liste des alias Debian (en fait Ubuntu sur Mint) puis les serveurs sur le net qui répondent. Celui dont le nom est précédé d'une étoile est le serveur actif, ceux précédés d'un plus sont les candidats à son remplacement quand il se retirera ou sera moins accessible.

Voilà, en espérant que cela puisse résoudre ton problème.
La folie c'est de faire toujours la même chose en espérant obtenir un résultat différent.
laptop : MEDION Akoya E1210 / LM18.1 LXDE 32b (seule) / Desktop : LXDE (Openbox 3.6.1) / Kernel : 4.4.0-53-generic / CPU : Single core Intel Atom N270 / RAM : 1Go / HDD : 160.0Go / CG : Intel Mobile 945GSE Express Integrated Graphics Controller

Alarc'h
Messages : 25
Enregistré le : mer. 22 févr. 2017 22:48

Re: Synchroniser l'heure

Message par Alarc'h »

Oups, je parle mais je vois que je n'ai pas répondu à ta question précise. Je ne connais pas gnome-scheduler, mais d'après ce que tu en dis cela ressemble à une interface graphique à cron.

Ce que tu vois dans tes logs signifie que l'utilisateur de la crontab n'a pas les droits nécessaires. Je suppose que ton utilitaire gnome a placé la commande dans une crontab utilisateur alors que ntpdate doit être lancé en tant que root.

Je n'aime pas trop ces interfaces graphiques qui n'aident pas à comprendre le fonctionnement interne de la machine.

Pour avoir le fin mot de l'affaire dans une console en tant que simple utilisateur (sur ton compte quoi) tape :

Code : Tout sélectionner

crtontab -l
De deux choses l'une, soit tu vois "no crontab for toto" (si toto est ton nom d'utilisateur) soit un truc qui devrait ressembler à ça :

Code : Tout sélectionner

crontab -l
# Edit this file to introduce tasks to be run by cron.
# 
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
# 
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').# 
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
# 
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
# 
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# 
# For more information see the manual pages of crontab(5) and cron(8)
# 
# m h  dom mon dow   command
01 * * * * /usr/sbin/ntpdate -sv ntp-p1.obspm.fr
Si c'est le cas il est normal que dans

Code : Tout sélectionner

/var/log/syslog
tu vois ce que tu vois, le bind (bascule) interdite pour des problèmes de permissions.

Tu fais la même chose en root, tu passes root :

Code : Tout sélectionner

sudo -i
Puis tu fais ton crontab -l et tu verras sans doute no crontab for root vu que les applications qui utilisent crontab en démon utilisent une approche un peu différente. Car si tu as ta ligne crontab en root tu auras dans tes logs un truc du genre (je viens de tester chez moi) :

Code : Tout sélectionner

Feb 23 18:58:01 Marc-ThinkPad-SL510 CRON[4763]: (root) CMD (/usr/sbin/ntpdate -sv ntp-p1.obspm.fr)
Feb 23 18:58:01 Marc-ThinkPad-SL510 ntpdate[4764]: ntpdate 4.2.8p4@1.3265-o Wed Oct  5 12:34:47 UTC 2016 (1)
Feb 23 18:58:08 Marc-ThinkPad-SL510 ntpdate[4764]: adjust time server 145.238.203.14 offset 0.007655 sec
Maintenant la bonne question est comment écrire une ligne dans la crontab de root ?

Toujours en tant que root tu lances :

Code : Tout sélectionner

crontab -e
cette fois, -l listait le fichier crontab, -e permet de l'éditer. À ce momment crontab va te poser une question indiscrète : quel éditeur de texte veux-tu utiliser. Car on n'édite pas les fichiers crontab en allant directement les modifier dans cron.d/ /etc/cron.daily/ /etc/cron.hourly/ /etc/cron.monthly/ /etc/crontab /etc/cron.weekly/. C'est un cas particulier sous unix, il faut utiliser l'éditeur que lance crontab.

tu verras donc une truc genre :

Code : Tout sélectionner

crontab -e
no crontab for root - using an empty one

Select an editor.  To change later, run 'select-editor'.                                                                                                                
  1. /bin/ed                                                                                                                                                            
  2. /bin/nano        <---- easiest                                                                                                                                     
  3. /usr/bin/vim.basic
  4. /usr/bin/vim.tiny
La liste peut-être différente suivant ce que tu as installé tu pourrais voir figurer joe, emacs etc. Mais si tu débutes tu verras sans doute ça, voir même pas vim. Je sais que nano est très populaire mais je ne l'ai jamais utilisé donc je peux te donner la marche à suivre pour vim (apt-get install vim si tu ne l'as pas encore).

Vim c'est pas sexy mais davantage que vi, son "ancêtre". La fenêtre vi s'ouvre, pour faire dans le basic tu montes et descend avec les flèches haut bas, et tu te déplaces dans les lignes avec droite gauche (il y a plein de raccourcis, mais faisons simple).

Quand tu es en fin de fichier tu crées une nouvelle ligne. Mais problème vim n'est pas d'accord, il faut d'abord te mettre en mode insertion en appuyant seulement sur la touche i . Tu vois insertion inscrit en bas.
La comme tu es en console graphique et sous vim et pas vi tu peux, Ô confort, soit taper ta ligne sois la coller à la souris si tu la recopies ici :

Code : Tout sélectionner

01 * * * * /usr/sbin/ntpdate -sv ntp-p1.obspm.fr
Quezaco ? C'est la syntaxe crontab le premier chiffre 01 c'est la minute à laquelle tu veux ta synchro, j'ai mis ça mais tu peux mettre celle que tu veux entre 1 et 60, puis les étoiles veulent dire : tous les jours du mois, tous les mois, tous les jours de la semaine, puis tu écris la commande à lancer.

une fois que c'est fait tu enregistres en tapant sur escape pour sortir du mode d'insertion, puis en tapant sur w puis q et en validant, w c'est write (écrire le fichier) et q c'est quitter autrement dit fermer en enregistrant. Si tu ne veux pas enregistrer tape seulement q et enter. Tu quitteras sans enregistrer. Si il couine parce que tu as un buffer d'ouvert il faut alors taper q et ! autrement dit quitter en abandonnant les modifications.

Alors ton ntpdate en cron fonctionnera, et sois tu seras tombé amoureux fou de la ligne de commande unix soit tu seras perdu à jamais pour la bonne cause !! :D

Mais dès que tu seras passé sur ntp il ne fonctionnera plus car ntpd utilisera le port cron et dans tes logs tu verras :

Code : Tout sélectionner

Feb 23 18:55:01 Marc-ThinkPad-SL510 ntpdate[4641]: ntpdate 4.2.8p4@1.3265-o Wed Oct  5 12:34:47 UTC 2016 (1)
Feb 23 18:55:01 Marc-ThinkPad-SL510 ntpdate[4641]: the NTP socket is in use, exiting
Alors tu rééditeras comme je viens de t'expliquer la crontab (et peut-être auras tu investi quelques minutes à apprendre à utiliser nano qui est sans doute moins indigeste que vim) et soit tu commenteras la ligne de crontab en mettant un # devant soit tu l'effaceras carrément.

Voili voilou
La folie c'est de faire toujours la même chose en espérant obtenir un résultat différent.
laptop : MEDION Akoya E1210 / LM18.1 LXDE 32b (seule) / Desktop : LXDE (Openbox 3.6.1) / Kernel : 4.4.0-53-generic / CPU : Single core Intel Atom N270 / RAM : 1Go / HDD : 160.0Go / CG : Intel Mobile 945GSE Express Integrated Graphics Controller

Avatar du membre
Markco
Messages : 282
Enregistré le : ven. 23 sept. 2016 23:22

Re: Synchroniser l'heure

Message par Markco »

Ok merci pour tout ;)
Asus N76VJ Portable, 4x Intel(R), Core(TM) i5-3230M CPU @ 2.60GHz, 3929MB,GeForce GT 635M/PCIe/SSE2, 4.13.0-16-generic x86_64, Linux Mint 18.2 Cinnamon 3.4.6 en dual avec windows 10 1607.

Répondre