GNU/Linux >> Tutoriales Linux >  >> Linux

Tutorial sobre el uso del comando Timeout en Linux

Un comando timeout es una utilidad de línea de comandos que ejecuta un comando específico y lo detiene si aún se está ejecutando después de un cierto período de tiempo. En otras palabras, el comando timeout le permite ejecutar el comando con un tiempo de espera que especifique. El comando timeout es parte del paquete básico de utilidades GNU que está instalado en casi todas las distribuciones de Linux.

Este comando es útil cuando desea ejecutar un comando que no tiene una opción de tiempo de espera integrada o detener un proceso después de una cierta cantidad de tiempo en ejecución.

En este artículo, explicaremos cómo usar los comandos timeout en la terminal de Linux.

Cómo usar el comando de tiempo de espera

La sintaxis del comando de tiempo de espera es la siguiente:

timeout [OPTIONS] DURATION COMMAND [ARG]…

DURATION puede ser un número entero positivo o un número de punto flotante, seguido de un sufijo de unidad opcional:

  • s – segundos (segundos) (esta es la opción predeterminada)
  • m – minutos (minutos)
  • h – horas (horas)
  • d – días (días)

Cuando no se utilizan unidades, el valor predeterminado es segundos. Si la duración se establece en cero, el tiempo de espera asociado se desactiva.

Las opciones de comando deben proporcionarse antes del argumento.

Aquí hay algunos ejemplos básicos que muestran cómo usar el comando timeout :

  • Detener el comando ping después de cinco segundos::timeout 5 ping 8.8.8.8
  • Detener el comando después de cinco minutos:tiempo de espera 5m ping 8.8.8.8
  • Detener el comando después de un minuto y seis segundos:tiempo de espera 1.1m ping 8.8.8.8

Si desea ejecutar un comando que requiere privilegios como tcpdump , añade un prefijo sudo antes del comando timeout :

sudo timeout 300 tcpdump -n -w data.pcap

Enviar señales específicas

Si no se da ninguna señal, timeout utilizará la señal SIGTERM para el comando especificado cuando se alcance el tiempo de espera. Puede especificar qué señal usar usando -s ( --signal ) opción .

Por ejemplo, para enviar SIGKILL a un comando ping después de un minuto, puede usar el comando:

sudo timeout -s SIGKILL ping 8.8.8.8

La señal se puede especificar por su nombre como SIGKILL o número como 9 . El siguiente comando es idéntico al anterior:

sudo timeout -s 9 ping 8.8.8.8

Para obtener una lista de todas las señales disponibles, use el comando kill -l :

kill -l

Eliminar el proceso atascado

SIGTERM , algunos procesos pueden detectar o ignorar la señal predeterminada que se envía cuando se supera el tiempo de espera. En esa situación, el proceso continúa ejecutándose después de que se envía la señal de terminación.

Para asegurarse de que el comando monitoreado se haya detenido, use la opción -k ( --kill-after ) seguido de un período de tiempo. Cuando se usa esta opción después de alcanzar el tiempo de espera dado, el comando timeout envía una señal SIGKILL al programa correspondiente a la entrada del usuario.

En el siguiente ejemplo, timeout ejecuta el comando durante un minuto y, si no se cancela, "matará" el programa después de diez segundos:

sudo timeout -k 10 1m ping 8.8.8.8
timeout -k “./test.sh”

El proceso se cancelará una vez que se alcance el límite de tiempo dado, aunque esté atascado.

Mantener el estado de salida

timeout devolverá 124 cuando se ha llegado al límite de tiempo. De lo contrario, el comando timeout devolverá el estado de salida del comando administrado.

Para devolver el estado de salida del comando incluso cuando se alcanza el tiempo de espera, use la opción --preserve-status :

timeout --preserve-status 5 ping 8.8.8.8

Ejecución de comandos en primer plano

Por defecto, timeout ejecuta un comando en segundo plano. Si desea ejecutar el comando en primer plano, use la opción --foreground :

timeout --foreground 5m ./script.sh

Esta opción es útil cuando desea ejecutar comandos interactivos que requieren la entrada del usuario.

Conclusión

El comando es timeout se utiliza para ejecutar un determinado comando con un límite de tiempo según la voluntad del usuario.

Comandos timeout son comandos simples que no tienen muchas opciones. Por lo general, utilizará un comando timeout con solo dos argumentos, duración y el comando que ocurrirá.


Linux
  1. Una introducción al uso de tcpdump en la línea de comandos de Linux

  2. Domina el comando ls de Linux

  3. Usando la fuerza en la línea de comando de Linux

  4. Introducción al comando de alternativas en Linux

  5. El comando de localización en Linux

El comando del temporizador en Linux

Ejecute procesos en segundo plano en Linux usando el comando Pantalla

El comando curl de Linux

Tutorial sobre el uso del último comando en la terminal de Linux

Usando el comando Watch en Linux

Usando el comando tr en Linux para jugar con personajes