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
nohup
intercepta 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-process
no muera.disown
simplemente elimina el trabajo especificado de la lista secundaria de Bash, por lo que no intentará enviar SIGHUP en absoluto.nohup
es un programa separado del shell, por lo que funciona con todos los shells, mientras quedisown
es un Bash incorporado.nohup
acepta el comando para ejecutarse, mientras quedisown
solo 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.out
para 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!
screen
es 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 -r
para 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 name
y deja que tu otro amigo se conecte a ellascreen -x name
.tmux
withtmuxinator
es una gran combinación para configuraciones sofisticadas, mientras que prefieroscreen
una 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-Z
suspenda el proceso en primer plano. Esto informará el número de trabajo del proceso suspendido, por ejemplo:Envíe
processName
al fondo conbg %1
(usando el número de trabajo que sigue al%
). Esto se reanudaráprocessName
en el fondo.Desconocido
processName
condisown %1
odisown PID
. Use la-h
bandera 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 moo
se adjuntará a la sesión de moo en el host lalassh -t lala screen -S moo
creará la sesión de moo en el host lalay
ssh -t lala screen -S moo quux
creará 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+b
es el "ok google" de tmux, yd
es 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 attach
para ver su pantalla exactamente como la dejó. Algo que me encanta es dividir el panel:ctrl+b
y luego presionar"
. Para cambiar de un panel a otro,ctrl+b
y 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