Usar nohup para continuar corriendo un proceso

Si estamos utilizando una terminal e iniciamos un proceso desde la misma, podemos enviarlo a segundo plano para que no obstaculice nuestro trabajo (tal como vimos en el post anterior). Sin embargo, la ejecución de dicho proceso se verá interrumpido si cerramos la terminal desde la que lo iniciamos, o si cerramos la sesión actual. Para evitar que esto suceda, podamos usar nohup, una herramienta que permite iniciar un proceso que sea inmune a la situación que describimos anteriormente.

¿Cómo usar nohup?

La sintaxis de uso de nohup es la siguiente:

nohup [programa a iniciar] &

Como podemos ver, generalmente nohup se utiliza en conjunto con el símbolo & para enviar simultáneamente el programa en cuestión a segundo plano, aunque no es estrictamente necesario que lo hagamos de esa manera.

Veamos un ejemplo en concreto. Vamos a llevar a cabo los siguientes pasos:

Paso 1 – Iniciar un ping a carreralinux.com.ar:

nohup ping carreralinux.com.ar

Paso 2 – Desde otra terminal, tomamos nota del PID del comando anterior (2351) y de su padre (2324, el cual correspondea la primera terminal)

ps -u gacanepa -o ppid,pid,cmd

Paso 3 – Cerramos la primera terminal y volvemos a ejecutar el comando anterior. Vemos que el proceso padre (la shell bash) ya no aparece en la lista, y que ahora el padre del ping es el proceso con PID 1. Podemos observar esto en la Fig. 1:

Usar nohup para correr un proceso inmune al cierre de la terminal desde la que fue iniciado
Figura 1 – Usar nohup para correr un proceso inmune al cierre de la terminal desde la que fue iniciado

En la Fig. 1 vemos que utilizamos el comando kill para detener el ping que habíamos iniciado en la primera terminal.

Poder utilizar nohup es especialmente útil cuando estamos conectados a un equipo remotamente y deseamos ejecutar un script que continúe su ejecución luego de que cerremos la terminal asociada. De esta manera, no tenemos que estar logueados durante todo el tiempo que corra el script.

Espero que este post les haya resultado de utilidad. ¡Hasta la próxima!