¿Cómo mantener abierto un proceso al cerrar la sesión SSH?

publicado por: Anonymous

Resulta que tengo un proceso que me gustaría mantener abierto durante un tiempo indefinido. Si inicio el proceso desde SSH, al salir de la sesión SSH el proceso también se cierra.

Quiero saber cómo se puede dejar ese proceso ejecutándose aunque salga de la sesión SSH.

solución

Aclaraciones:

  1. tmux y screen no son principalmente para eso que quieres, son un multiplexor y un emulador de terminal respectivamente. Que te permitan mantener un proceso ejecutándose en un servidor remoto no es su característica principal. Utilizarlos sólo para eso es subutilizarlos y dejar corriendo en tu servidor remoto programas de más.

  2. A diferencia de lo que dijo @patapalo, el caracter ‘&’ no mantiene un proceso abierto después de cerrar sesión. Lo que hace es que lo pasa a background permitiendo que la shell desde la que se ejecutó continue trabajando. Si cierras la conexión ssh este proceso se para.

Lo que necesitas es el programa nohup que está diseñado para eso.

La forma de correr nohup es la siguiente:

nohup ./programa &

Lo que hace nohup hacer que un programa ignore la señal SIGHUP. Cuando uno corre un programa y luego se sale de la terminal, aunque lo haya corrido en background con ./programa &, el programa recibe una señal SIGHUP lo cual suspende la ejecución del programa. En cambio, con nohup puedes seguir corriendo el programa a pesar de cerrar la sesión ssh o enviar una señal como kill -1 pid_del_programa.

Para matarlo sólo tienes que matar el proceso asociado al programa, ya sea con kill (claro, siempre y cuando no envíes la señal 1 o SIGHUP) o con algún visor de procesos, etc.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *