GNU/Linux >> Tutoriales Linux >  >> Linux

Evite que la tarea de Linux que se está ejecutando actualmente se elimine después de cerrar la sesión de SSH

Si su tarea ya se inició, es demasiado tarde* para considerar soluciones alternativas que inserten una capa adicional entre su ssh sesión y el shell ejecutando el comando, como screen , tmux , byobu , nohup y similares.

Si su proceso admite que se coloque en segundo plano y, en particular, no se cuelga cuando stdout y stderr no se pueden escribir/cerrar, puede ponerlo en segundo plano antes de cerrar sesión con Control Z y bg luego sepárelo de su caparazón con el disown integrado.

por ejemplo:

$ ssh localhost
You have new mail.
Last login: Fri Jun  6 11:26:56 2014

$ /bin/sleep 3600    


^Z[1] + Stopped                  /bin/sleep 3600
$ bg
[1] /bin/sleep 3600&
$ jobs
[1] +  Running                 /bin/sleep 3600
$ disown %1
$ exit
Connection to localhost closed.
$ ps -ef|grep sleep
jlliagre 12864     1  0 21:12 ?        00:00:00 /bin/sleep 3600
jlliagre 13056 12477  0 21:13 pts/18   00:00:00 grep sleep
$ 

* Como comentó Bob, en realidad hay varias formas de cambiar el padre de una sesión de tty en Linux. repty, retty, injcode y neercs. El más avanzado parece ser reptyr, pero es posible que necesite privilegios de root para permitir que ptrace piratee su proceso.


Una solución es usar la pantalla GNU. Podría iniciar screen , ejecuta tu comando, luego sepáralo con C-a d . Más tarde, para volver a conectar, haga screen -r , y vuelve a su sesión anterior.

Otros beneficios de la pantalla son la administración de ventanas (para que pueda cambiar a otros shells mientras se ejecuta su comando, sin necesidad de una nueva conexión SSH), y permite que su comando permanezca en primer plano, ya sea en la sesión actual o en una posterior.

Editar: Como se indica en los comentarios, esto solo funcionará si recuerda iniciar screen antes de ejecutar el comando. Si el comando ya se está ejecutando, necesitará la solución de @jlliagre.


Linux
  1. Cómo encontrar conexiones SSH activas en Linux

  2. 4 formas de mantener un comando en ejecución después de cerrar la sesión de SSH

  3. Comando SCP Linux:cómo transferir archivos SSH de remoto a local

  4. Cómo evitar que un proceso en segundo plano se detenga después de cerrar el cliente SSH en Linux

  5. ¿Cómo hacer que un programa continúe ejecutándose después de cerrar la sesión de ssh?

Programe hardware desde la línea de comandos de Linux

Cómo quitar un comando del historial en Linux

Cómo pasar la contraseña al comando SSH en Linux

Cómo usar SSH en Linux desde Android

12 cosas que hacer después de instalar un servidor Linux

Mantener un proceso de Linux en ejecución después de cerrar la sesión