Question
J'aimerais pouvoir exécuter une commande UNIX précisément chaque seconde sur une longue période .
J'ai besoin d'une solution qui ne tarde pas après un certain temps, à cause du temps nécessaire à l'exécution de la commande elle-même. dormir , regarder , et un certain script python m'a tous échoué à cet égard.
Sur le microcontrôleur tel que le http://Arduino.cc, je le ferais par le biais d'interruptions d'horloge matérielle. Je voudrais savoir s'il existe une solution similaire de script de shell avec précision dans le temps. Toutes les solutions que j'ai trouvées dans StackExchange.com ont entraîné un décalage perceptible, si elles duraient plusieurs heures. Voir les détails ci-dessous.
But pratique / application
Je veux tester si ma connexion réseau est en permanence en hausse en envoyant des horodatages via nc
(netcat) toutes les secondes.
Expéditeur:
precise-timestamp-generator | tee netcat-sender.txt | nc $receiver $port
Receveur:
nc -l -p $port > netcat-receiver.txt
Une fois l’opération terminée, comparez les deux journaux:
diff netcat-sender.txt netcat-receiver.txt
Les diffs seraient les horodatages non transmis. De cela, je saurais à quelle heure mon LAN / WAN / ISP crée des problèmes.
Solution SLEEP
while [ true ]; do date "+%Y-%m-%d %H:%M:%S" ; sleep 1; done | tee timelog-sleep.txt
Obtient un certain décalage dans le temps, car la commande dans la boucle prend également un peu de temps.
Précision
cat timelog-sleep.txt
2012-07-16 00:45:16
[...]
2012-07-16 10:20:36
Secondes écoulées: 34520
wc -l timelog-sleep.txt
Lignes dans le fichier: 34243
Précision résumée:
- 34520-34243 = 277 problèmes de synchronisation
- 34520/34243 = 1,008 = 0,8% de réduction
Solution RÉPÉTER PYTHON
Trouvé à: Répéter une commande Unix toutes les x secondes pour toujours
repeat.py 1 "date '+%Y-%m-%d %H:%M:%S'" >> timelog-repeat-py.txt
Censé éviter le décalage horaire, mais ne parvient pas à le faire.
Précision
wc -l timelog-repeat-py.txt
2012-07-16 13:42:44
[...]
2012-07-16 16:45:24
Secondes écoulées: 10960
wc -l timelog-repeat-py.txt
Lignes dans le fichier: 10859
Précision résumée:
- 10960-10859 = 101 problèmes de chronométrage
- 10960/10859 = 1,009 = 0,9% de réduction
Solution MONTRE
watch -n 1 "date '+%Y-%m-%d %H:%M:%S' >> ~/Desktop/timelog-watch.txt"
Précision
wc -l timelog-watch.txt
2012-07-16 11:04:08
[...]
2012-07-16 13:25:47
Secondes écoulées: 8499
wc -l timelog-watch.txt
Lignes dans le fichier: 8366
Précision résumée:
- 8499-8366 = 133 problèmes de synchronisation.
- 8499/8366 = 1.016 = 1.6% de réduction.
nice
le processus qui dort?