La Fibre
Télécom => Logiciels et systèmes d'exploitation => Linux => Discussion démarrée par: vivien le 18 février 2014 à 17:54:20
-
Pour mettre à l'heure mes serveurs, j'utilise la crontab.
Mais je me suis dit qu'il était bête de solliciter un serveur NTP juste au changement de minute et qu'il serait pertinent d'introduire un délai aléatoire pour répartir mieux la charge.
Le code sleep $[ ( $RANDOM % 58 ) + 2 ]s fonctionne trés bien dans une invite de commande, mais pas dans la crontab, pourquoi ?
Dans la crontab, il ne cherche pas a remplacer les $ par la valeur calculée !
# mise a l'heure chaque heure entre à la première minute, entre 00:02min et 00:59min
00 * * * * sleep $[ ( $RANDOM % 58 ) + 2 ]s ; /usr/sbin/ntpdate 192.168.1.1 >>/home/log/ntpdate/ntpdate.log 2>&1
-
Le code sleep $[ ( $RANDOM % 58 ) + 2 ]s fonctionne trés bien dans une invite de commande, mais pas dans la crontab, pourquoi ?
Dans la crontab, il ne cherche pas a remplacer les $ par la valeur calculée !
Est-ce que tu es sûr que les chaînes de caractères passées à crontab à l'emplacement des commandes sont bien exécutées avec bash ?
Tu devrais plutôt mettre le code dans un .sh, ça serait plus propre et résoudrait probablement le problème.
-
Effectivement, c'est une incompatibilité de dash (qui a l'avantage d'être plus rapide que bash, utiliser moins de mémoire et avoir un exécutable 9 fois plus léger)
dash est utilisé par défaut sous Ubuntu / Debian pour tout ce qui est scripts.
Voici mon fichier test1.sh :
#!/bin/dash
sleep $[ ( $RANDOM % 58 ) + 2 ]s ; echo test
Cela ne fonctionne pas :
$ ./test1.sh
./test1.sh: 2: ./test.sh: Syntax error: "(" unexpected
Voici mon fichier test2.sh :
#!/bin/bash
sleep $[ ( $RANDOM % 58 ) + 2 ]s ; echo test
Cela fonctionne :
$ ./test2.sh
test
-
Mais je me suis dit qu'il était bête de solliciter un serveur NTP juste au changement de minute et qu'il serait pertinent d'introduire un délai aléatoire pour répartir mieux la charge.
Hello,
pourquoi mettre un temps variable ? tu peux croner toutes les 3 heures au lieu de la minute non ?
-
La je mets à jour toutes les heures (c'est vrai que c'est peut être un peu trop fréquent)
-
La je mets à jour toutes les heures (c'est vrai que c'est peut être un peu trop fréquent)
apres est-ce qu'une requete NTP surement aussi grosse que 3 ou 4 requetes DNS le vent dans le dos va faire plomber un serveur ? j'en doute fort....
-
pourquoi ne pas utiliser ntpd?
c'est fait pour ça il me semble!
-
c'est pour eviter d'avoir un daemon a gerer en plus je suppose....
-
ntpd, c'est pour mettre en place un serveur ntp (afin que d'autres machines se mettent à l'heure)
Il y a le fichier /etc/default/ntpdate mais je n'ai pas compris quand était fait la mise à jour et où étaient les logs (vérifier si le serveur est toujours ok)
La crontab offre un autre avantage : contrôler l'heure de mise à jour. Sur des machines qui font des tests (et je ne fais aucun test la première minute de chaque heure). Le fait d'avoir un gros trafic qui sature le lien et entraîne de la gigue impacte la fiabilité de la mise à jour.
-
Pour moi ntpd c'est avant tout un client de mise a jour en continue de l'horloge
je ne sais si il fait aussi serveur (ce doit être paramétrable)
si tu introduis une notion aléatoire dans la mise a jour de ntpdate ça revient au même que d'utiliser ntpd non?
sauf que comme avantage ntpd calcule la dérive moyenne de ton horloge (drift) et la corrige a l' avance! (ou lorsque le réseau est hs!)
par contre quel besoin d'avoir toujours un serveur a l'heure à la ms près?
-
Pour certains usages (capture wireshark coté client et coté serveur) c'est très important d'avoir une heure fiable à la ms prés. Sinon, c'est vrai que tant qeu cela ne décale pas trop ce n'est pas grave.
J'introduit une part de aléatoire limite (55 secondes d'aléatoire) sur un espace temps où je sais que je n'utilise pas la connexion.
-
ok effectivement avec wireshark
:)