systemadmin.es > Utilidades > Limitar el tiempo de CPU de un proceso con ulimit

Limitar el tiempo de CPU de un proceso con ulimit

No resulta extraño que algún proceso lanzado mediante cron se quede colgado con algún error extraño y se dedique a consumir toda la CPU que pueda:

Procesos cron saturando la CPU

Procesos cron saturando la CPU

Vamos a ver cómo podemos limitar esto mediante ulimit:

Mediante ulimit podemos limitar el número de segundos de CPU que dispone un proceso para ejecutarse. Con segundos de CPU tenemos que contar el tiempo que el proceso usa la CPU, no el tiempo real de ejecución. Por ejemplo, si ejecutamos el siguiente script:

#!/bin/bash
ulimit -t 30
date
while true;
do echo a > /dev/null;
done

Si lo ejecutamos podemos ver como el tiempo de CPU mediante ps con la columna TIME:

$ ps -eo time,comm | grep ejemplo
00:00:05 ejemplo.sh

Veremos en este caso concreto cómo el tiempo real es el doble del tiempo que limitamos:

$ ./ejemplo.sh ; date
Mon Nov 22 19:17:34 CET 2010
Killed
Mon Nov 22 19:18:05 CET 2010

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>