Repetir comando automáticamente en Linux
¿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.
Mira 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 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í
while true; do
sleep 5
ls -l
done
"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
sleep
ya 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.
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"'