A veces tengo procesos de larga ejecución que quiero iniciar antes de volver a casa, así que creo una sesión SSH en el servidor para comenzar el proceso, pero luego quiero cerrar mi computadora portátil y volver a casa y más tarde, después de la cena, quiero verifique el proceso que comencé antes de dejar el trabajo. ¿Cómo puedo hacer eso con SSH? Según tengo entendido, si interrumpe su conexión SSH, también interrumpirá su sesión de inicio de sesión en el servidor, lo que anulará el largo proceso de ejecución.
                    
                        command-line
                                ssh
                                process
                                gnu-screen
                                
                    
                    
                        λ Jonas Gorauskas
fuente
                
                
            fuente

nohupintercepta SIGHUP para que cuando el shell que lo ejecutó se cierre y envíe SIGHUP a todos sus hijos que aún están corriendo,long-running-processno muera.disownsimplemente elimina el trabajo especificado de la lista secundaria de Bash, por lo que no intentará enviar SIGHUP en absoluto.nohupes un programa separado del shell, por lo que funciona con todos los shells, mientras quedisownes un Bash incorporado.nohupacepta el comando para ejecutarse, mientras quedisownsolo funciona después de que se inicia el trabajo y lo ha puesto en segundo plano para que pueda volver al shell.tail -f nohup.outpara ver qué pasa cuando vuelvas.Desea estar usando la pantalla GNU. ¡Es súper increíble!
CTRL+ a, dpara desconectarse de su sesión de pantalla
Cuando regrese a su computadora portátil:
¡Entonces mira el progreso de tu largo proceso!
screenes una herramienta muy completa y puede hacer mucho más de lo que he descrito. Mientras está en una sesión de pantalla, intente ctrl + a ,? para aprender algunos comandos comunes. Probablemente los más comunes son:screen -d -rpara asegurarme de que si se conecta otro shell a mi sesión de pantalla, se desconectará antes de reanudarlo en mi sistema actual.fuente
screen -S namey deja que tu otro amigo se conecte a ellascreen -x name.tmuxwithtmuxinatores una gran combinación para configuraciones sofisticadas, mientras que prefieroscreenuna solución rápida y simple.Si no ha planeado con anticipación y la configuración
screen, etc. simplemente haga lo siguiente:Si su proceso se ejecuta en segundo plano: pase al # 3, de lo contrario:
Ctrl-Zsuspenda el proceso en primer plano. Esto informará el número de trabajo del proceso suspendido, por ejemplo:Envíe
processNameal fondo conbg %1(usando el número de trabajo que sigue al%). Esto se reanudaráprocessNameen el fondo.Desconocido
processNamecondisown %1odisown PID. Use la-hbandera si desea mantener la propiedad hasta que finalice su shell actual.fuente
&cuando lo comencé. ¡Esto parece funcionar muy bien!Lo que desea usar es la pantalla o, mejor aún, un contenedor fácil de usar alrededor de la pantalla llamado byobu.
Screen le permite ejecutar múltiples sesiones de terminal virtual en la misma sesión ssh. Un tutorial y páginas de ayuda están disponibles.
byobu es un contenedor que permite abrir fácilmente nuevas pantallas con una simple tecla de función en lugar de la combinación de teclas de ctrl-a. También muestra una línea de estado con todos los terminales virtuales abiertos que se pueden nombrar.
Otra característica interesante es el hecho de que toda su pantalla puede permanecer activa mientras su conexión ssh está desconectada. Simplemente se conecta de nuevo a través de ssh y llama a byobu y todo es como antes.
Por fin algunas capturas de pantalla de byobu.
fuente
Vale la pena señalar que
ssh -t lala screen -rxU moose adjuntará a la sesión de moo en el host lalassh -t lala screen -S moocreará la sesión de moo en el host lalay
ssh -t lala screen -S moo quuxcreará la sesión moo en host lala y ejecutará el programa quux , cerrando la sesión al finalizar.fuente
Antigua pregunta, extraña aún, nadie aconsejó a tmux , que actúa como envoltorio para n consolas y las mantiene abiertas hasta que sea necesario. Esto permite un mayor control, además de una serie de funciones que tiene tmux. Es fácil de administrar, solo ejecuta tmux, que lo lleva a su shell, inicia su trabajo, luego presiona ctrl + b seguido de d (detach) (
ctrl+bes el "ok google" de tmux, ydes el comando para cerrar sin salida de la cáscara). Esto realmente funciona si solo cierras, por ejemplo, masilla. Después de la cena, cuando vuelva a conectarse, puede volver a abrir tmuxtmux attachpara ver su pantalla exactamente como la dejó. Algo que me encanta es dividir el panel:ctrl+by luego presionar". Para cambiar de un panel a otro,ctrl+by luego presione la flecha arriba / abajo.fuente
Puede encontrar una buena guía aquí: Mantenga su sesión SSH ejecutándose cuando se desconecte
Ahora puede comenzar una nueva sesión de pantalla simplemente escribiendo screen en la línea de comando. Se le mostrará información sobre la pantalla. Presiona enter, y estarás en un mensaje normal.
Para desconectarse (pero dejar la sesión en ejecución) Presione Ctrl+ Ay luego Ctrl+ Den sucesión inmediata. Verá el mensaje [separado]
Para volver a conectarse a una sesión que ya se está ejecutando
Para volver a conectarse a una sesión existente, o crear una nueva si no existe
Para crear una nueva ventana dentro de una sesión de pantalla en ejecución, presione Ctrl+ Ay luego Cen sucesión inmediata. Verá un nuevo aviso.
Para cambiar de una ventana de pantalla a otra Hit Ctrl+ Ay luego Ctrl+ Aen sucesión inmediata.
Para enumerar las ventanas de pantalla abierta, presione Ctrl+ Ay luego Wen sucesión inmediata
fuente
<kbd>Ctrl</kbd>para mostrar los nombres como teclas del teclado.Uso NX NoMachine, que es gratis para mí porque solo soy yo. Básicamente, ejecuta una sesión X en el servidor que puede conectar y desconectar una y otra vez. La sesión X sigue ejecutándose cuando no estás conectado. Las conexiones se pueden hacer desde cualquier lugar. Puede elegir entre ventanas flotantes o una sola ventana que contiene un escritorio completo (por ejemplo, un escritorio Gnome completo). El cliente (que ejecutaría en su computadora portátil) puede ejecutarse en Linux, MacOS, Solaris o Microsoft Windows. En el último caso, si elige ventanas flotantes, aparecerán individualmente en la barra de tareas de Windows.
Uso mi computadora portátil Windows XP (que necesito para cierto hardware específico de Windows que tengo) como interfaz para mis dos servidores Linux que usan NX Nomachine. Incluso puedo imprimir en la impresora conectada a mi computadora portátil con Windows desde Linux.
fuente