Hoy les traigo un tip interesante para probar, y es poder correr una aplicación por el tiempo que necesitemos y luego cerrarla, el comando en cuestión se llama timeout presente en el paquete coreutils y por lo general esta instalado en la mayoría de las distribuciones linux.

Vamos a ver un ejemplo del comando ping y que después de 6 segundos corte el proceso:

timeout 6s ping google.com

Ahora bien, esto hará que el comando ping finalice sin mostrar el resumen correspondiente, esto se debe a diferentes señales enviadas: mientras que Ctrl+C corresponde con SIGINT (señal 2), timeout envía por defecto SIGTERM (señal 15) cuando no se especifica una como parámetro.

Es posible cambiar la señal con la opción -s y poder enviar SIGINT en lugar de SIGTERM al alcanzar el límite de tiempo:

timeout -s SIGINT 6s ping google.com

Algo interesante es que timeout soporta el envío de una señal SIGKILL (señal 9) posterior, si es que el proceso no ha finalizado correctamente. Puede pasar que los procesos no responden en tiempo y forma a la señal SIGTERM o SIGINT, de esta forma es posible enviar una última señal SIGKILL para matarlos definitivamente.

Otro ejemplo interesante es por ejemplo correr el comando top por un determinado tiempo que paso a mostrar:

timeout 1m top

En fin, cualquier comando puede ser lanzado y detenido a gusto del usuario, sin duda hay que darle unos minutos para probarlo.

Deja un comentario