Repetir comando automáticamente en Linux

Resuelto Marty Wallace asked hace 11 años • 14 respuestas

¿Es posible en la línea de comandos de Linux repetir un comando cada n segundos?

Digamos que tengo una importación en ejecución y estoy haciendo

ls -l

para comprobar si el tamaño del archivo está aumentando. Me gustaría tener un comando para que esto se repita automáticamente.

Marty Wallace avatar Nov 28 '12 04:11 Marty Wallace
Aceptado

Mira cada 5 segundos...

watch -n 5 ls -l

Si desea tener una confirmación visual de los cambios, agregue --differencesantes del lscomando.

Según la página de manual de OSX, también hay

La opción --acumulativa hace que el resaltado sea "fijo", 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í

Rawkode avatar Nov 27 '2012 21:11 Rawkode
while true; do
    sleep 5
    ls -l
done
Oleksandr Kravchuk avatar Nov 27 '2012 21:11 Oleksandr Kravchuk

"ver" no permite fracciones de segundo en Busybox, mientras que "dormir" sí. Si eso te importa, prueba esto:

while true; do ls -l; sleep .5; done
mikhail avatar Nov 27 '2012 23:11 mikhail

sleepya regresa 0. Como tal, estoy usando:

while sleep 3 ; do ls -l ; done

Esta es un poquito más corta que la solución de Mikhail. Un inconveniente menor es que duerme antes de ejecutar el comando de destino por primera vez.

Sebastian Wagner avatar Mar 12 '2017 18:03 Sebastian Wagner

Si el comando contiene algunos caracteres especiales como barras verticales y comillas, el comando debe completarse con comillas. Por ejemplo, para repetir ls -l | grep "txt", el comando de vigilancia debe ser:

watch -n 5 'ls -l | grep "txt"'

jonathanzh avatar Dec 16 '2015 16:12 jonathanzh