Un administrador de sistemas 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 creas o no, en muchos casos esto es demasiado lento.
En este tutorial, aprenderá técnicas de secuencias de comandos simples para monitorear o vigilar un comando en particular en un estado de ejecución continua similar al comando principal (supervisar continuamente el proceso y la utilización de la memoria) cada 3 segundos de forma predeterminada.
No nos detendremos a discutir las razones por las que necesitaría ejecutar comandos con tanta frecuencia. Creo que todos tienen diferentes razones para eso en sus trabajos diarios o incluso en las PC y portátiles de casa.
1. Usa el comando reloj
Ver 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.
Supervisar el uso de la memoria
"Watch" es extremadamente fácil de usar, para probarlo, puede iniciar una terminal de Linux de inmediato y escribir el siguiente comando:
# watch free -m
El comando anterior verificará la memoria libre de su sistema y actualizará los resultados del comando libre cada dos segundos.
Como se ve en el resultado anterior, tiene un encabezado que muestra información sobre (de izquierda a derecha) el intervalo de actualización, el comando que se está ejecutando y la hora actual. Si desea ocultar este encabezado, puede usar -t
opción.
La siguiente pregunta lógica es:cómo cambiar el intervalo de ejecución. Para ese propósito, puede usar -n
opción, que especifica el intervalo con el que se ejecutará el comando. Este intervalo se especifica en segundos. Entonces, digamos que desea ejecutar su script.sh
archivo cada 10 segundos, puedes hacerlo así:
# watch -n 10 script.sh
Nota que si ejecuta el comando como se muestra arriba, deberá cd
al directorio (aprenda los ejemplos de comandos de Learn 15 cd) donde se encuentra la secuencia de comandos o, de lo contrario, especifique la ruta completa a esa secuencia de comandos.
Otras opciones útiles del comando watch son:
-b
– crea un pitido si la salida del comando es distinta de cero.-c
– Interpreta secuencias de colores ANSI.-d
– resalta los cambios en la salida del comando.
Supervise los usuarios registrados, el tiempo de actividad y el promedio de carga
Supongamos que desea monitorear a los usuarios que iniciaron sesión, el tiempo de actividad del servidor y cargar la salida promedio en una fase continua cada pocos segundos, luego use el siguiente comando como se muestra:
# watch uptime
Para salir del comando, presione CTRL+C
.
Aquí, el 'uptime'
El comando se ejecutará y mostrará los resultados actualizados cada 2 segundos de forma predeterminada.
Supervisar el progreso del comando de copia
En Linux, al copiar archivos de una ubicación a otra usando cp
comando, no se muestra el progreso de los datos, para ver el progreso de la copia de datos, puede usar el 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
Si cree que el proceso anterior es demasiado complicado de lograr, le sugiero que elija el comando de copia avanzada, que muestra el progreso de los datos durante la copia.
2. Usar el comando de suspensión
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 for
o while
bucles, puede obtener resultados impresionantes.
Si es nuevo en bash scripting, puede consultar nuestra guía sobre bash loops aquí.
En caso de que sea la primera vez que escuchas sobre el "sleep"
comando, se utiliza para retrasar algo durante un período de tiempo específico. En los scripts, puede usarlo para indicarle 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, duerma durante N cantidad de segundos y luego ejecute el comando nuevamente.
A continuación puede ver ejemplos de ambos bucles:
Ejemplo de bucle for
# for i in {1..10}; do echo -n "This is a test in loop $i "; date ; sleep 5; done
El trazador de líneas anterior ejecutará el comando de eco y mostrará la fecha actual, un total de 10 veces, con 5 segundos de suspensión entre ejecuciones.
Aquí hay una salida de muestra:
This is a test in loop 1 Wed Feb 17 20:49:47 EET 2016 This is a test in loop 2 Wed Feb 17 20:49:52 EET 2016 This is a test in loop 3 Wed Feb 17 20:49:57 EET 2016 This is a test in loop 4 Wed Feb 17 20:50:02 EET 2016 This is a test in loop 5 Wed Feb 17 20:50:07 EET 2016 This is a test in loop 6 Wed Feb 17 20:50:12 EET 2016 This is a test in loop 7 Wed Feb 17 20:50:17 EET 2016 This is a test in loop 8 Wed Feb 17 20:50:22 EET 2016 This is a test in loop 9 Wed Feb 17 20:50:27 EET 2016 This is a test in loop 10 Wed Feb 17 20:50:32 EET 2016
Puedes cambiar el eco y fecha comandos con sus propios comandos o secuencias de comandos y cambie el intervalo de suspensión según sus necesidades.
Ejemplo de ciclo while
# while true; do echo -n "This is a test of while loop";date ; sleep 5; done
Aquí hay un resultado de muestra:
This is a test of while loopWed Feb 17 20:52:32 EET 2016 This is a test of while loopWed Feb 17 20:52:37 EET 2016 This is a test of while loopWed Feb 17 20:52:42 EET 2016 This is a test of while loopWed Feb 17 20:52:47 EET 2016 This is a test of while loopWed Feb 17 20:52:52 EET 2016 This is a test of while loopWed Feb 17 20:52:57 EET 2016
El comando anterior se ejecutará hasta que el usuario lo elimine o lo interrumpa. Puede ser útil si necesita ejecutar un comando en segundo plano y no quiere contar con cron .
Importante :Al usar los métodos anteriores, se recomienda encarecidamente que establezca un intervalo lo suficientemente largo para que su comando tenga suficiente tiempo para terminar de ejecutarse, antes de la próxima ejecución.
Conclusión
Los ejemplos de este tutorial son útiles, pero no pretenden reemplazar por completo la utilidad cron. Depende de usted encontrar cuál funciona mejor para usted, pero si tuviéramos que separar el uso de ambas técnicas, diría esto:
- Utilice 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 están destinados a ejecutarse dentro de la sesión de usuario actual.
Como siempre, si tiene alguna pregunta o comentario, no dude en enviarlos en la sección de comentarios a continuación.