Mire cada 5 segundos ...
watch -n 5 ls -l
Si desea tener una confirmación visual de los cambios, agregue --differences
antes del ls
comando.
Según la página del manual de OSX, también hay
La opción --cumulativa hace que el resaltado sea "pegajoso", presentando una visualización continua de todas las posiciones que alguna vez han cambiado. La opción -t o --no-title desactiva el encabezado que muestra el intervalo, el comando y la hora actual en la parte superior de la pantalla, así como la siguiente línea en blanco.
La página de manual de Linux / Unix se puede encontrar aquí
watch mysql dbname -e \"show processlist\;\"
brew install watch
fuente
watch
También tiene el desafortunado efecto secundario de limpiar la pantalla, por lo que a veces el bucle es útil. Cuál usar depende del formato deseado de la salida.--differences
para resaltarlos (si está preocupado por el repintado de la terminal)watch
. Watch no funciona, por ejemplo, cuando desea generar un número aleatorio en cada invocación, por ejemplowatch -n 1 echo ${RANDOM}
. El azar solo será llamado una vez."mirar" no permite fracciones de segundo en Busybox, mientras que "dormir" sí. Si eso te importa, prueba esto:
fuente
sleep
Ya vuelve0
. Como tal, estoy usando:Esto es un poco más corto que la solución de mikhail. Un inconveniente menor es que duerme antes de ejecutar el comando de destino por primera vez.
fuente
Si el comando contiene algunos caracteres especiales, como tuberías y comillas, el comando debe rellenarse con comillas. Por ejemplo, para repetir
ls -l | grep "txt"
, el comando watch debería ser:watch -n 5 'ls -l | grep "txt"'
fuente
Es posible ejecutar comandos periódicamente sin cron cuando vamos con
while
.Como un comando:
Ejemplo:
No olvide el último,
&
ya que pondrá su bucle en segundo plano. Pero necesita encontrar la identificación del proceso con el comando "ps -ef | grep your_script" y luego debe eliminarlo. Añada amablemente el '&' cuando ejecute el script.Aquí está el mismo bucle que un script. Crea el archivo "while_check.sh" y ponlo aquí:
Luego ejecútalo escribiendo
bash ./while_check.sh &
fuente
echo $!
después de que se inicie cada proceso en segundo plano: ese es el PID del último proceso secundario iniciado en segundo plano.echo `date`
es una manera pobre y un poco defectuosa de escribir solodate
. (El error tiene que ver con la falta de cita del argumento paraecho
). Ver también uso inútil deecho
.El reloj es bueno pero limpiará la pantalla.
fuente
Si desea evitar la "deriva", lo que significa que desea que el comando se ejecute cada N segundos, independientemente de cuánto tiempo tome el comando (suponiendo que tome menos de N segundos), aquí hay un golpe que repetirá un comando cada 5 segundos con uno- segunda precisión (e imprimirá una advertencia si no puede seguir el ritmo):
Todavía puede moverse un poco, ya que el sueño solo es preciso hasta un segundo. Puede mejorar esta precisión mediante el uso creativo del comando de fecha.
fuente
Si desea hacer algo un número específico de veces, siempre puede hacer esto:
fuente
for x in {1..300} ; do
comandos bash do||break;sleep 1.5; done
Puede ejecutar lo siguiente y filtrar solo el tamaño. Si se llamó a su archivo
somefilename
, puede hacer lo siguientewhile :; do ls -lh | awk '/some*/{print $5}'; sleep 5; done
Una de las muchas ideas.
fuente
Para minimizar la deriva más fácilmente, use:
todavía habrá una pequeña cantidad de deriva debido al tiempo de bash para ejecutar la estructura de bucle y el comando de suspensión para ejecutar realmente.
sugerencia: ':' evalúa a 0, es decir, verdadero.
fuente
Ejecutará el
ls -l
comando cada 5 sSalida: -
fuente
Una solución concisa, que es particularmente útil si desea ejecutar el comando repetidamente hasta que falle, y le permite ver todos los resultados.
fuente