
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 watch
el 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 watch
comando y sus opciones, ejecute man watch
o 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 ls
en 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.
watch
interpretará secuencias de colores ANSI pasando caracteres de escape usando la opción-c
o--color
. Por ejemplo, la salida depygmentize
funcionará 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:
Si bien
watch
funcionará perfectamente en Ubuntu, es posible que desees evitarlo si quieres que tu "Unix-fu" sea puro. En FreeBSD, por ejemplo,watch
hay un comando para "espiar otra línea tty".while true; do command; sleep SECONDS; done
Tambié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
SECONDS
antes de que ocurra la primera aparición del comando.
Respuesta4
puedes usar crontab. ejecute el comando crontab -e
y á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