Pregunta
Me gustaría poder ejecutar un comando UNIX precisamente cada segundo durante un largo período de tiempo .
Necesito una solución, que no se quede atrás después de un cierto tiempo, debido al tiempo que el comando en sí necesita para su ejecución. dormir , mirar y un cierto script de Python me fallaron a este respecto.
En el microcontrolador como el http://Arduino.cc lo haría a través de interrupciones de reloj de hardware. Me gustaría saber si existe una solución similar de script de shell con precisión de tiempo. Todas las soluciones que encontré dentro de StackExchange.com, resultaron en un notable retraso de tiempo, si se ejecuta durante horas. Vea los detalles abajo.
Propósito práctico / aplicación
Quiero probar si mi conexión de red está continuamente nc
activa enviando marcas de tiempo a través de (netcat) cada 1 segundo.
Remitente:
precise-timestamp-generator | tee netcat-sender.txt | nc $receiver $port
Receptor:
nc -l -p $port > netcat-receiver.txt
Después de la finalización, compare los dos registros:
diff netcat-sender.txt netcat-receiver.txt
Las diferencias serían las marcas de tiempo no transmitidas. De esto sabría a qué hora mi LAN / WAN / ISP causa problemas.
Solución SUEÑO
while [ true ]; do date "+%Y-%m-%d %H:%M:%S" ; sleep 1; done | tee timelog-sleep.txt
Obtiene un cierto desplazamiento con el tiempo, ya que el comando dentro del bucle también lleva un poco de tiempo.
Precisión
cat timelog-sleep.txt
2012-07-16 00:45:16
[...]
2012-07-16 10:20:36
Segundos transcurridos: 34520
wc -l timelog-sleep.txt
Líneas en el archivo: 34243
Precisión resumida:
- 34520-34243 = 277 problemas de tiempo
- 34520/34243 = 1.008 = 0.8% de descuento
Solución REPETIR PYTHON
Encontrado en: Repita un comando Unix cada x segundos para siempre
repeat.py 1 "date '+%Y-%m-%d %H:%M:%S'" >> timelog-repeat-py.txt
Se supone que evita el desplazamiento de tiempo, pero no lo hace.
Precisión
wc -l timelog-repeat-py.txt
2012-07-16 13:42:44
[...]
2012-07-16 16:45:24
Segundos transcurridos: 10960
wc -l timelog-repeat-py.txt
Líneas en el archivo: 10859
Precisión resumida:
- 10960-10859 = 101 problemas de tiempo
- 10960/10859 = 1.009 = 0.9% de descuento
RELOJ de solución
watch -n 1 "date '+%Y-%m-%d %H:%M:%S' >> ~/Desktop/timelog-watch.txt"
Precisión
wc -l timelog-watch.txt
2012-07-16 11:04:08
[...]
2012-07-16 13:25:47
Segundos transcurridos: 8499
wc -l timelog-watch.txt
Líneas en el archivo: 8366
Precisión resumida:
- 8499-8366 = 133 problemas de tiempo.
- 8499/8366 = 1.016 = 1.6% de descuento.
nice
el proceso que duerme?