¿Repetir un comando cada x intervalo de tiempo en la terminal?

¿Repetir un comando cada x intervalo de tiempo en la terminal?

Cómo puedorepetirun comando cada intervalo de tiempo, de modo que me permita ejecutar comandos paracomprobación osupervisión directorios?

No es necesario un script, solo necesito ejecutar un comando simple en la terminal.

Respuesta1

Puedes usar watchel comando,mirarse utiliza para ejecutar cualquier comando designado a intervalos regulares.

Abra Terminal y escriba:

watch -n x <your command>

cambiarXpara que sea el tiempo en segundos que desees.

Para obtener más ayuda sobre el uso del watchcomando y sus opciones, ejecute man watcho visite esteEnlace.

Por ejemplo :a continuación se enumerará, cadaaños 60, en la misma Terminal, el contenido del directorio Escritorio para que puedas saber si se produjo algún cambio:

watch -n 60 ls -l ~/Desktop

Respuesta2

También puedes usar este comando en la terminal, además dela respuesta de nux:

while true; do <your_command>; sleep <interval_in_seconds>; done

Ejemplo:

while true; do ls; sleep 2; done

Este comando imprimirá la salida de lsen un intervalo de 2 segundos.

Utilice Ctrl+ Cpara detener el proceso.

Hay algunos inconvenientes de watch:

  • No puede utilizar ningún comando con alias.
  • Si el resultado de cualquier comando es bastante largo, el desplazamiento no funciona correctamente.
  • Hay algunos problemas para configurar elintervalo de tiempo máximomás allá de cierto valor.
  • watchinterpretará secuencias de colores ANSI pasando caracteres de escape usando la opción -co --color. Por ejemplo, la salida de pygmentizefuncionará pero fallará ls --color=auto.

En las circunstancias anteriores, esta puede parecer una mejor opción.

Respuesta3

Sólo quería colaborarsourav c.'arenanuezLas respuestas de:

  1. Si bien watchfuncionará perfectamente en Ubuntu, es posible que desees evitarlo si quieres que tu "Unix-fu" sea puro. En FreeBSD, por ejemplo, watchhay un comando para "espiar otra línea tty".

  2. while true; do command; sleep SECONDS; doneTambién tiene una advertencia: tu comando podría ser más difícil de eliminar usando Ctrl+ C. Quizás prefieras:

    while sleep SECONDS; do command; done
    

    No sólo es más corto, sino también más fácil de interrumpir. La advertencia es que primero se suspenderá y luego ejecutará su comando, por lo que deberá esperar un poco SECONDSantes de que ocurra la primera aparición del comando.

Respuesta4

puedes usar crontab. ejecute el comando crontab -ey ábralo con su editor de texto preferido, luego agregue esta línea

*/10 * * * *  /path-to-your-command

Esto ejecutará su comando cada 10 minutos.

* */4 * * *  /path-to-your-command

Esto ejecutará su comando cada 4 horas.

Otra posible solución

$ ..some command...; for i in $(seq X); do $cmd; sleep Y; done

Xnúmero de veces para repetir.

Ytiempo de esperar para repetir.

Ejemplo :

$ echo; for i in $(seq 5); do $cmd "This is echo number: $i"; sleep 1;done

información relacionada