Hoy veremos un tip para que de formas fácil podamos ejecutar un comando durante un tiempo específico y terminar el tiempo que automáticamente se cierre de una vez que se agote el tiempo en sistemas operativos Linux.
Método 1: uso del comando «Timeout»
El método más común es usar el comando de timeout. Para aquellos que no lo saben, el comando de tiempo de espera limitará efectivamente el tiempo de ejecución absoluto de un proceso. El comando timeout es parte del paquete GNU coreutils, por lo que viene preinstalado en todos los sistemas GNU/Linux y no requiere instalación.
1- Usando timeout con 10 segundos
timeout 10s tail -f /var/log/apt/history.log
Aclaraciones, podemos especificar el tiempo de distintas formas:
- s: segundos
- m: minutos
- h: horas
- d: días
2- Si lanzamos el comando tail con -f, se ejecutará hasta que la cancelación se haga manual con CTRL+C, pero podemos usar timeout para matar el proceso mandan una señal de kill.
timeout -k 20 10m tail -f /var/log/apt/history.log
Método 2 – Uso del programa «Timelimit»
La utilidad Timelimit ejecuta un comando determinado con los argumentos proporcionados y finaliza el proceso generado después de un tiempo determinado con una señal determinada. Primero, pasará la señal de advertencia y luego, después del tiempo de espera, enviará la señal de terminación.
A diferencia de la utilidad timeout, el timelimit tiene más opciones. Puede pasar varios argumentos como killsig, warnsig, killtime, warntime, etc.
Está disponible en los repositorios predeterminados de los sistemas basados en Debian, así que lo instalamos con apt
sudo apt install timelimit
Y lo usamos de la siguiente forma, corriendo un comando por 10 segundos:
timelimit -t10 tail -f /var/log/apt/history.log
Si se ejecuta el comando sin argumentos, utilizará los valores predeterminados: warntime=3600 segundos, warnsig=15, killtime=120, killsig=9.
Siempre es recomendable ver el manual
man timelimit