Cómo usar el comando de tiempo de espera en Linux

toadmin. ru

Bien, eso es suficiente tiempo de computadora. Puede establecer límites de tiempo para los procesos estableciendo el tiempo máximo que pueden ejecutar utilizando el comando Tiempo de espera. Aquí hay un tutorial sobre cómo establecer límites en la ejecución de programas usando este comando.

¿Qué hace el tiempo de espera?

El comando de tiempo de espera le permite establecer un límite en el tiempo que se ejecutará un programa. Pero, ¿por qué querrías hacer esto?

Un caso de uso es cuando sabe exactamente cuánto tiempo desea que se ejecute un proceso. Un caso de uso común es controlar el tiempo de espera para un programa de registro o recopilación de datos para que los archivos de registro no ocupen sin piedad el espacio de disco duro.

Otro caso es cuando no sabe cuánto tiempo desea que se ejecute, pero sabe que no quiere que se ejecute indefinidamente. Es posible que tenga la costumbre de establecer procesos de ejecución, minimizar la ventana del terminal y olvidarlos de ellos.

Algunos programas, incluso utilidades simples, pueden generar tráfico de red en niveles que pueden degradar el rendimiento de su red. O pueden vincular los recursos en el dispositivo objetivo, frenando su rendimiento.(Ping, te estoy mirando). Dejar este tipo de programas que se ejecutan durante largos períodos de tiempo cuando estás lejos de tu computadora es una mala práctica.

El tiempo de espera es parte de GNU Core Utils, por lo que Linux y los sistemas operativos similares a unix como MacOS tienen un tiempo de espera incorporado. No hay nada que instalar; Puedes usarlo de la caja.

Comenzando con el tiempo de espera

Aquí hay un ejemplo simple. Por ejemplo, con los parámetros de línea de comando predeterminados, el comando de ping se ejecutará hasta que lo detenga presionando CTRL + C. Si no lo interrumpe, simplemente continuará.

Ping 192. 168. 4. 28

Al usar Tiempo de espera, podemos asegurarnos de que el ping no se ejecute continuamente, reduciendo el ancho de banda de la red y molesto cualquier dispositivo que se esté haciendo ping.

El siguiente comando usa el tiempo de espera para limitar el ping en el tiempo. Damos 15 segundos de tiempo de ejecución para la verificación de enlaces.

Tiempo de espera 15 ping 192. 168. 4. 28

Tiempo de espera 15 ping 192. 168. 4. 28 en una ventana terminal

Después de 15 segundos, la sesión de verificación de comunicación termina y volvemos a la línea de comando.

Cómo instalar el tema de Plano GTK en Linu

Sesión de ping final en la ventana de la terminal

Usar tiempo de espera con otras unidades de tiempo

Tenga en cuenta que no necesitamos agregar un «S» después de 15. Tiempo de espera supone que el valor se especifica en segundos. Puede agregar una «S», pero realmente no importa.

Para usar un valor de tiempo medido en minutos, horas o días, agregue «M», «H» o «D».

Para hacer ping durante tres minutos, use el siguiente comando:

Tiempo de espera 3M Ping 192. 168. 4. 28

Tiempo de espera 3M Ping 192. 168. 4. 28 en la ventana terminal

Ping funcionará durante tres minutos antes de que expire el tiempo de espera y detenga la sesión de ping.

Sesión de ping que se ejecuta en Windows Viwow

Limitar la captura de datos de tiempo de espera

Algunos archivos de captura de datos pueden crecer muy rápidamente. Para evitar que dichos archivos se vuelvan difíciles de manejar o incluso de tamaño problemático, limite la cantidad de tiempo que puede ejecutar el programa de captura.

En este ejemplo, usamos TCPDUMP, una herramienta de captura de tráfico de red. En las máquinas de prueba en las que se investigó este artículo, TCPDump ya estaba instalado en Ubuntu Linux y Fedora Linux. Tenía que instalarse en Manjaro Linux y Arch Linux usando el siguiente comando:

sudo pacma n-syu tcpdump.

sudo pacma n-syu tcpdump en la ventana terminal

Podemos ejecutar TCPDump durante 10 segundos con sus parámetros predeterminados y redirigir su salida a un archivo llamado Capture. txt usando el siguiente comando:

timeout 10 sudo tcpdump >Captura. txt

¿Qué pasó?¿Por qué no se detuvo el tiempo de espera tcpdump?

Se trata de señalización.

Cómo cambiar los datos del usuario con CHFN y USERMOD en Linux

Enviando la señal correcta

Cuando TimeOut quiere detener un programa, envía una señal de signo. Esto le pedirá cortésmente al programa que termine. Algunos programas pueden ignorar la señal de signo. Cuando esto sucede, necesitamos especificar un tiempo de espera para que sea un poco más fuerte.

Podemos hacer esto especificando un tiempo de espera para enviar la señal Sigkill en su lugar.

La señal Sigkill no puede ser «atrapada, bloqueada o ignorada», siempre pasa. Sigkill no le pide que detenga cortésmente el programa. Sigkill se esconde a la vuelta de la esquina con un cronómetro y un trapo.

Podemos usar el parámetr o-s (señal) para especificar un tiempo de espera para enviar una señal a Sigkill.

timeout -s SIGKILL 10 sudo tcpdump >Captura. txt

Es educado preguntar primero

Podemos especificar un tiempo de espera para tratar de detener el programa con Sigterm, y solo enviar Sigkill si Sigterter falla.

Para hacer esto, usamos el parámetr o-K (Kill After). El parámetr o-k requiere un valor de tiempo como parámetro.

En este comando, solicitamos un tiempo de espera para permitir que DMESG se ejecute durante 30 segundos y luego lo termine con una señal Sigterm. Si DMESG todavía se está ejecutando después de 40 segundos, significa que se ha ignorado el siglo diplomático y el tiempo de espera debe enviarse a Sigkill para terminar.

DMESG es una utilidad que puede monitorear los mensajes de búfer de anillo del núcleo y mostrarlos en una ventana de terminal.

Tiempo de esper a-K 40 30 DMSE G-W

Tiempo de esper a-K 40 30 DMSE G-W en una ventana de terminal

DMESG se ejecuta durante 30 segundos y se detiene cuando recibe una señal de signo.

Salida de DMESG en la ventana terminal

Sabemos que no fue Sigkill lo que detuvo a Dmesg porque Sigkill siempre deja un obituario de una palabra en la ventana terminal: «asesinado». En este caso no sucedió.

Obtener el código de salida del programa

Los programas de bienestar bien devuelven un valor al shell cuando terminan. Esto se llama código de salida. Esto generalmente se usa para decirle al shell o cualquier proceso que ejecute el programa si había un problema cuando el programa comenzó.

TimeOut proporciona su propio código de salida, pero es posible que no nos importe eso. Probablemente estamos más interesados en el código de salida del proceso que administra el tiempo de espera.

Cómo instalar Skype en Linux

Este comando le permite ejecutar el comando ping durante cinco segundos. Verifica la comunicación con una computadora llamada Nostromo, que se encuentra en la red de pruebas que se utilizó para investigar este artículo.

Tiempo de espera 5 Ping Nostromo. local

Tiempo de espera 5 Ping Nostromo. local en una ventana terminal

El comando se ejecuta durante cinco segundos y es terminado por un tiempo de espera. Luego podemos verificar el código de salida usando este comando:

Echo $?

¿Salida de ping y eco $? En la ventana terminal

El código de salida es 124. Este valor de tiempo de espera se utiliza para indicar la terminación del programa con SIGTEM. Si Sigkill termina el programa, el código de salida es 137.

Si interrumpimos el programa con CTRL + C, el código de salida del tiempo de espera es cero.

Tiempo de espera 5 Ping Nostromo. local
Echo $?

Tiempo de espera 5 Ping Nostromo. local en una ventana terminal usando CTRL + C

Si la ejecución del programa termina antes de que finalice el tiempo de espera, el tiempo de espera puede pasar el código de salida del programa al shell.

Para que esto suceda, el programa debe detenerse por sí mismo (en otras palabras, no se espera), y debemos usar el parámetr o-eserv e-status.

Si usamos el parámetr o-c (Count) con un valor de cinco, Ping solo enviará cinco solicitudes. Si establecemos el tiempo de espera en un minuto, Ping definitivamente terminará solo. Luego podemos verificar el valor de salida con Echo.

Tiempo de espera --Preserv e-status 1m pin g-c 5 nostromo. local
Echo $?

Tiempo de espera --Preserv e-status 1M Pin g-C 5 Nostromo. Local en una ventana terminal

Ping completa sus cinco solicitudes de ping y termina. El código de salida es cero.

Para verificar que el código de salida proviene del ping, hagamos que Ping genere un código de salida diferente. Si intentamos enviar solicitudes de ping a una dirección IP inexistente, Ping terminará con un error de código de salida. Luego podemos usar Echo para verificar que el código de salida no sea cero.

Tiempo de espera --Preserv e-status 1M pin g-c 5
Echo $?

Tiempo de espera --Preserv e-status 1m pin g-c 5 no es necesario. Local en la ventana terminal

Obviamente, el comando ping no puede llegar al dispositivo inexistente, por lo que informa un error y se cierra. El código de salida es dos. Este es el código de salida que usa Ping para errores comunes.

Establecer las reglas básicas

El tiempo de espera es un límite en los programas que se pueden ejecutar. Si existe el peligro de que los archivos de registro puedan desbordar su disco duro o si puede olvidar que dejó una herramienta de red en ejecución, ejecutarlos por tiempo de espera y dejar que su computadora se autorregule.