systemadmin.es > Programación > El comando timeout de coreutils

El comando timeout de coreutils

Es común ver en servidores dedicados a la ejecución de procesos como algunos se quedan colgados indefinidamente. Por lo tanto, resulta muy interesante poder disponer de un tiempo máximo de ejecución para un cierto proceso, ya sea para no bloquear a otro como para evitar que se quede en memoria consumiendo recursos.

Mediante el comando timeout, introducido en la release de la versión 7 de coreutils podemos limitar el tiempo real de ejecución de un proceso. Su funcionamiento es extremadamente simple, sólo deberemos indicar el tiempo máximo de ejecución seguido del comando:

# timeout 5s comando

Podemos ver su funcionamiento mediante un sleep viendo la fecha antes y después de la ejecución del comando:

$ date;timeout 5s sleep 100;date
Thu Feb  3 14:06:00 CET 2011
Thu Feb  3 14:06:05 CET 2011

Dicho comando apareció en el Changelog de coreutils el 2 de junio del 2008:

2008-06-02  P draig Brady

	new program: timeout

Aún que ya lleva cierto tiempo disponible, la versión de coreutils de CentOS 5.5 es la 5.97, por lo que aún no esta disponible como paquete. Podemos instalar dicho comando desde el código fuente de coreutils:

cd /usr/local/src/
wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.9.tar.gz
tar xzf coreutils-8.9.tar.gz
cd coreutils-8.9
./configure && make

A continuación podemos instalar exclusivamente el comando timeout en el sistema dejándolo en algún punto del sistema. Por ejemplo, dentro de /usr/local/bin ya que esta directorio suele estar en el PATH.

cp src/timeout /usr/local/bin/ -p

6 comments to “El comando timeout de coreutils”

  1. Muy curioso!

  2. Muy interesante, sobre todo para ejecución de estadisticas y copias de seguridad, más de una vez se me han solapado 2 copias por que le han metido mucha caña a el server y se ha puedo todo loco.

  3. Muy interesante, la verdad es que no lo conocía.

    Por otro lado, ¿Soy yo el único que le asombra lo atrás en el tiempo que se quedó CentOS? Desde el kernel a coreutils, y gcc, todo está increiblemente quedado en el tiempo.

  4. Centos simplemente se queda donde se queda redhat enterprise, en mi humilde opinion en una orientación a servidores y estabilidad no esta mal pensar en comprobar y recomprobar y ofrecer componentes que esten requetecomprobados.

  5. Que buena no conocía ese comando, me acuerdo que para hacer algo similar tuve que hacer un script en bash.

  6. A ver cuando sale finalmente la CentOS 6. La versión 5 se ha quedado ya muy vieja, es del 12 de abril del 2007: Ya se le van notando los años

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>