Table of Contents
Cómo ejecutar o repetir un comando de Linux cada X segundos para siempre
Un administrador del sistema a menudo necesita ejecutar un comando repetidamente en ciertos períodos de tiempo. A menudo, estas tareas se pueden completar fácilmente con simples comandos cron. En la mayoría de los casos, esto debería funcionar, pero el período más corto en el que puede ejecutar el comando cron es cada 1 minuto. Lo crea o no, en muchos casos esto es demasiado lento.
Ejecute el comando de Linux cada segundo
En este tutorial, aprenderá técnicas simples de scripting para monitorear o vigilar un comando en particular en estado de ejecución continua similar al comando superior (monitorear continuamente el proceso y la utilización de la memoria) por cada 3 segundos por defecto.
No nos detendremos a discutir las razones por las que necesitaría ejecutar comandos con tanta frecuencia. Creo que todo el mundo tiene distintas razones para ello en su trabajo diario o incluso en sus PC y portátiles.
1. Use watch Command
Watch. es un comando de Linux que le permite ejecutar un comando o programa periódicamente y también muestra su salida en la pantalla. Esto significa que podrá ver la salida del programa a tiempo. Por defecto, el reloj vuelve a ejecutar el comando/programa cada 2 segundos. El intervalo se puede cambiar fácilmente para cumplir con sus requisitos.
Monitorear el uso de la memoria
“Watch” es extremadamente fácil de usar; para probarlo, puede iniciar una terminal Linux de inmediato y escribir el siguiente comando:
# watch free-m freestar.config.enabled_slots.push
El comando anterior comprobará la memoria libre de su sistema y actualizará los resultados de la comando cada dos segundos.
Supervisar el uso de memoria en Linux
Como se ve en el resultado anterior, tiene un encabezado que muestra información sobre el intervalo de actualización (de izquierda a derecha), el comando que se está ejecutando y la hora actual. Si desea ocultar este encabezado, puede usar la opción-t.
La siguiente pregunta lógica es: cómo cambiar el intervalo de ejecución. Para ello, puede utilizar la opción-n, que especifica el intervalo con el que se ejecutará el comando. Este intervalo se especifica en segundos. Digamos que desea ejecutar su archivo script.sh cada 10 segundos, puede hacerlo así:
# watch-n 10 script.sh
Nota. que si ejecuta el comando como se muestra arriba, tendrá que ir al directorio (aprender los ejemplos de comandos de Learn 15 cd) donde se encuentra el script o especificar la ruta completa a ese script.
Otras opciones útiles del comando watch son:
- -b-crea un pitido si la salida del comando no es cero.
- -c-Interpreta ANSI secuencias de color.
- -d: resalta los cambios en la salida del comando.
Supervisar los usuarios registrados, el tiempo de actividad y el promedio de carga
Digamos que desea supervisar los en los usuarios, el tiempo de actividad del servidor y la salida promedio de carga en fase continua cada pocos segundos, luego use el siguiente comando como se muestra:
# ver tiempo de actividad
Ver carga de Linux Promedio
Para salir del comando, presione CTRL + C.
Aquí, el comando ‘uptime’ se ejecutará y mostrará los resultados actualizados cada 2 segundos de forma predeterminada.
Monitorear el progreso del comando Copiar
En Linux, mientras copiando archivos de una ubicación a otra usando el comando cp, el progreso de los datos no se muestra, para ver el progreso de los datos que se copian, puede usar el comando watch junto con el comando du-s para verificar el uso del disco en tiempo real.
# cp ubuntu-15.10-desktop-amd64.iso/home/tecmint/& # watch-n 0.1 du-s/home/tecmint/ubuntu-15.10-desktop-amd64.iso
Supervisar el progreso del comando de copia
Si cree que el proceso anterior es demasiado complicado de lograr, entonces le sugiero que elija el comando de copia avanzada, que muestra el progreso de los datos durante la copia.
2. Use el comando sleep
Sleep se usa a menudo para depurar scripts de shell, pero también tiene muchos otros propósitos útiles. Por ejemplo, cuando se combina con bucles for o while, puede obtener resultados bastante impresionantes.
Si es nuevo en la creación de scripts bash, puede consultar nuestra guía sobre bucles bash aquí.
En caso de que sea la primera vez que escuche sobre el comando “dormir”, se usa para retrasar algo durante un período de tiempo específico. En los scripts, puede usarlo para decirle a su script que ejecute el comando 1, espere 10 segundos y luego ejecute el comando 2.
Con los bucles anteriores, puede decirle a bash que ejecute un comando, dormir por N. cantidad de segundos y luego ejecute el comando nuevamente.
A continuación puede ver ejemplos de ambos bucles:
for loop Example # for i in 1..10 ; do echo-n “Esta es una prueba en el ciclo $ i”; fecha ; dormir 5; done
La línea anterior ejecutará el comando echo y mostrará la fecha actual, un total de 10 veces, con 5 segundos de suspensión entre ejecuciones.
Aquí hay un resultado de muestra:
Este es una prueba en el ciclo 1 Mié 17 de febrero 20:49:47 EET 2016 Esta es una prueba en el ciclo 2 Mié 17 de febrero 20:49:52 EET 2016 Esta es una prueba en el ciclo 3 Mié 17 de febrero 20:49:57 EET 2016 Esta es una prueba en el ciclo 4 Mié 17 de febrero 20:50:02 EET 2016 Esta es una prueba en el ciclo 5 Mié 17 de febrero 20:50:07 EET 2016 Esta es una prueba en el ciclo 6 Mié 17 de febrero 20:50:12 EET 2016 Esta es una prueba en el ciclo 7 Mié 17 de febrero 20:50:17 EET 2016 Esta es una prueba en el ciclo 8 Mié 17 de febrero 20:50:22 EET 2016 Esta es una prueba en el ciclo 9 Mié 17 de febrero 20:50:27 EET 2016 Esta es una prueba en el ciclo 10 Wed Feb 17 20:50:32 EET 2016
Puede cambiar los comandos echo. y date. con sus propios comandos o script y cambie el intervalo de suspensión según sus necesidades.
while loop Example # while true; do echo-n “Esta es una prueba del ciclo while”; fecha; dormir 5; done
Aquí está el resultado de muestra:
Esta es una prueba de while loopWed 17 de febrero 20:52:32 EET 2016 Esta es una prueba de while loopWed 17 de febrero 20:52:37 EET 2016 Esta es una prueba de while loopWed 17 de febrero 20:52:42 EET 2016 Esta es una prueba de while loopWed 17 de febrero 20:52:47 EET 2016 Esta es una prueba de while loopWed 17 de febrero 20:52:52 EET 2016 Esta es una prueba de while loopWed 17 de febrero 20:52:57 EET 2016
El comando anterior se ejecutará hasta que el usuario lo elimine o lo interrumpa. Puede resultar útil si necesita ejecutar un comando que se ejecuta en segundo plano y no desea contar con cron.
Importante. cuando utilice los métodos anteriores, se recomienda encarecidamente que establezca un intervalo lo suficientemente largo como para que el comando termine de ejecutarse antes de la siguiente ejecución.
Conclusión
Los ejemplos de este tutorial son útiles, pero no están destinados a reemplazar completamente la utilidad cron. Depende de usted encontrar cuál funciona mejor para usted, pero si tenemos que separar el uso de ambas técnicas, diría esto:
- Use cron cuando necesite ejecutar comandos periódicamente incluso después de reiniciar el sistema.
- Use los métodos explicados en este tutorial para programas/scripts que deben ejecutarse dentro de la sesión de usuario actual.
Como siempre, si tiene cualquier pregunta o comentario, no dude en enviarlos en la sección de comentarios a continuación.