El script de timeout es un programa de monitorización de recursos útil para limitar el tiempo y el consumo de memoria de procesos en Linux. Te permite ejecutar programas bajo control, y hacer cumplir límites de tiempo y memoria, terminando el programa al violar estos parámetros.
No se necesita instalación, simplemente ejecuta un comando junto con sus argumentos usando el programa timeout y este monitorizará el consumo de memoria y tiempo del comando, interrumpiendo el proceso si se excede de los límites, y notificándote con el mensaje predefinido.
Para ejecutar este script, debes tener Perl 5 instalado en tu sistema Linux y el sistema de archivos /proc montado.
Para verificar la versión instalada de Perl en tu sistema Linux, ejecuta el siguiente comando.
$ perl -v

Luego, clona el repositorio timeout en tu sistema usando el comando git, luego muevete al repositorio local usando el comando cd e invócalo como un comando Linux usual.
$ cd ~/bin $ git clone https://github.com/pshved/timeout.git $ cd timeout
Ahora veamos cómo funciona el script timeout.
Límite Básico de Memoria (100M de Memoria Virtual):
Este primer ejemplo muestra cómo limitar el uso de memoria de un proceso a 100M de memoria virtual, utilizando la bandera -m
. La unidad predeterminada para la memoria es en kilobytes.
Aquí, el comando stress-ng ejecuta 4 estresores de memoria virtual (VMS) que se combinan para utilizar 40% de la memoria disponible durante 10 minutos. Por lo tanto, cada estresor utiliza 10% de la memoria disponible.
$ ./timeout -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

Teniendo en cuenta la salida del comando timeout anterior, los procesos trabajadores de stress-ng fueron terminados después de solo 1.16 segundos. Esto se debe a que el consumo de memoria combinado de los VMS (438660 kilobytes) es mayor que el uso permitido de memoria virtual para stress-ng y sus procesos hijos.
Límite Básico de Tiempo de Proceso:
Para habilitar el límite de tiempo de proceso, utilice la bandera -t
como se muestra.
$ ./timeout -t 4 stress-ng --vm 4 --vm-bytes 40% -t 10m

En el ejemplo anterior, cuando el tiempo stress-ng CPU+SYS excede el valor definido de 4, los procesos trabajadores son eliminados.
Limitar tanto el Tiempo como la Memoria del Proceso
También puede limitar tanto memoria como tiempo a la vez de la siguiente manera.
$ ./timeout -t 4 -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Timeout también admite algunas opciones avanzadas como --detect-hangups
, que habilita la detección de bloqueos.
$ ./timeout --detect-hangups -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Puedes monitorear el límite de memoria RSS (tamaño del conjunto residente) utilizando el interruptor --memlimit-rss
o -s
.
$ ./timeout -m 100000 -s stress-ng --vm 4 --vm-bytes 40% -t 10m
Además, para devolver el código de salida o la señal+128 de un proceso, utiliza la opción --confess
o -c
como se muestra.
$ ./timeout -m 100000 -c stress-ng --vm 4 --vm-bytes 40% -t 10m
Para obtener más información y ejemplos de uso, consulta el repositorio de Github de timeout: https://github.com/pshved/timeout.
También podrías encontrar útiles los siguientes artículos relacionados:
- Cómo encontrar los 15 procesos principales por uso de memoria con ‘top’ en modo lote
- CPUTool: Limita y controla la utilización de la CPU de cualquier proceso en Linux
- Cómo limitar el uso de CPU de un proceso en Linux con la herramienta CPULimit
El script timeout es un programa simple de monitoreo de recursos que básicamente restringe el tiempo y el consumo de memoria de los procesos en Linux. Puedes darnos tu opinión sobre el script timeout a través del formulario de comentarios a continuación.
Source:
https://www.tecmint.com/limit-time-and-memory-usage-of-linux-process/