timeoutes una utilidad de línea de comandos que ejecuta un comando específico y lo finaliza si aún se está ejecutando después de un período de tiempo determinado. En otras palabras, timeoutle permite ejecutar un comando con un límite de tiempo. El timeoutcomando es parte del paquete de utilidades principales de GNU, que se instala en casi cualquier distribución de Linux.
Es útil cuando desea ejecutar un comando que no tiene una opción de tiempo de espera incorporada.
En este artículo, explicaremos cómo usar el timeoutcomando de Linux.
Cómo usar el timeoutcomando
La sintaxis del timeoutcomando es la siguiente:
timeout [OPTIONS] DURATION COMMAND [ARG]…
Puede ser un número DURATIONentero positivo o un número de punto flotante, seguido de un sufijo de unidad opcional:
s- segundos (predeterminado)m- minutosh- horasd- días
Cuando no se utiliza ninguna unidad, 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 de los argumentos.
Aquí hay algunos ejemplos básicos que demuestran cómo usar el timeoutcomando:
Terminar un comando después de cinco segundos:
timeout 5 ping 8.8.8.8Terminar un comando después de cinco minutos:
timeout 5m ping 8.8.8.8Terminar un comando después de un minuto y seis segundos:
timeout 1.1m ping 8.8.8.8
Si desea ejecutar un comando que requiere privilegios elevados como tcpdump , anteponga sudo antes de timeout:
sudo timeout 300 tcpdump -n -w data.pcapEnvío de señal específica
Si no se da ninguna señal, timeoutenvía la SIGTERMseñal al comando administrado cuando se alcanza el límite de tiempo. Puede especificar qué señal enviar utilizando la opción -s( ).--signal
Por ejemplo, para enviar SIGKILLel ping comando después de un minuto, usaría:
sudo timeout -s SIGKILL ping 8.8.8.8Puede especificar la señal por el nombre, como SIGKILL, o su número como 9. El siguiente comando es idéntico al anterior:
sudo timeout -s 9 ping 8.8.8.8Para obtener una lista de todas las señales disponibles, use el kill -l comando:
kill -lEliminación de procesos atascados
SIGTERM, la señal predeterminada que se envía cuando se excede el límite de tiempo, puede ser capturada o ignorada por algunos procesos. En esas situaciones, 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 elimine, use la opción -k( ) seguida de un período de tiempo. --kill-afterCuando se usa esta opción después de alcanzar el límite de tiempo dado, el timeoutcomando envía la SIGKILLseñal al programa administrado que no se puede capturar ni ignorar.
En el siguiente ejemplo, timeoutejecuta el comando durante un minuto y, si no se termina, lo eliminará después de diez segundos:
sudo timeout -k 10 1m ping 8.8.8.8tiempo de espera -k “./prueba.sh”
asesinado después de que se alcanza el límite de tiempo dado
Conservación del estado de salida
timeoutvuelve 124cuando se alcanza el límite de tiempo. De lo contrario, devuelve el estado de salida del comando administrado.
Para devolver el estado de salida del comando incluso cuando se alcanza el límite de tiempo, use la --preserve-statusopción:
timeout --preserve-status 5 ping 8.8.8.8Corriendo en primer plano
De forma predeterminada, timeoutejecuta el comando administrado en segundo plano. Si desea ejecutar el comando en primer plano, use la --foregroundopción:
timeout --foreground 5m ./script.shEsta opción es útil cuando desea ejecutar un comando interactivo que requiere la participación del usuario.
Conclusión
El timeoutcomando se utiliza para ejecutar un comando dado con un límite de tiempo.
timeoutes un comando simple que no tiene muchas opciones. Por lo general, invocará timeoutsolo con dos argumentos, la duración y el comando administrado.
Si tiene alguna pregunta o comentario, no dude en dejar un comentario.

0 Comentarios