5 formas de mantener las sesiones y procesos de SSH remotos en ejecución después de la desconexión

5 formas de mantener las sesiones y procesos de SSH remotos en ejecución después de la desconexión

Ssh o Cubierta segura En términos simples, es una forma por la cual una persona puede acceder de forma remota a otro usuario en otro sistema, pero solo en la línea de comando I.mi. modo no gui. En términos más técnicos, cuando estamos en otro usuario en algún otro sistema y ejecutamos comandos en esa máquina, en realidad crea un pseudo terminal y lo adjunta al shell de inicio de sesión del usuario iniciado.

5 formas de mantener las sesiones de SSH en funcionamiento después de la desconexión

Cuando cerramos la sesión de la sesión o la sesión de la sesión fuera después de estar inactivas durante bastante tiempo, el Suspiro La señal se envía al pseudo terminal y todos los trabajos que se han ejecutado en esa terminal, incluso los trabajos que tienen sus trabajos principales iniciados en el pseudo terminal también se envían la señal de suspiro y se ven obligados a terminar.

No te pierdas: 5 prácticas útiles para mantener el servidor SSH seguro y protegido

Solo los trabajos que se han configurado para ignorar esta señal son los que sobreviven a la terminación de la sesión. En los sistemas Linux, podemos tener muchas formas de hacer que estos trabajos se ejecuten en el servidor remoto o en cualquier máquina incluso después de la sesión y la terminación de la sesión del usuario.

Comprender los procesos en Linux

Proceso normal

Los procesos normales son aquellos que tienen vida útil de una sesión. Se inician durante la sesión como procesos en primer plano y terminan en ciertos tiempos o cuando la sesión se cierra la sesión. Estos procesos tienen a su propietario como cualquiera de los usuarios válidos del sistema, incluida.

Proceso huérfano

Los procesos huérfanos son aquellos que inicialmente tenían un padre que creó el proceso, pero después de un tiempo, el proceso de los padres murió o se bloqueó sin querer, lo que hizo que Init sea el padre de ese proceso. Tales procesos tienen init como padre inmediato que espera en estos procesos hasta que mueran o terminan.

Proceso de demonio

Estos son algunos procesos intencionalmente huérfanos, dichos procesos que se dejan en ejecución intencionalmente en el sistema se denominan demonios o procesos intencionalmente huérfanos. Por lo general, son procesos de larga duración que una vez se inician y luego se separan de cualquier terminal de control para que puedan funcionar en el fondo hasta que no se completen, o terminen lanzando un error. Padre de tales procesos muere intencionalmente haciendo que el niño se ejecute en segundo plano.

Técnicas para mantener la sesión SSH en funcionamiento después de la desconexión

Puede haber varias formas de dejar las sesiones SSH en ejecución después de la desconexión como se describe a continuación:

1. Uso del comando de pantalla para mantener las sesiones de SSH en ejecución

pantalla es un administrador de ventanas de texto para Linux que permite al usuario administrar múltiples sesiones de terminales al mismo tiempo, cambiar entre sesiones, registro de sesión para las sesiones de ejecución en pantalla e incluso reanudar la sesión en cualquier momento que deseamos sin preocuparnos de que la sesión se haya registrado o la terminal está cerrada.

Las sesiones de pantalla se pueden iniciar y luego separarse del terminal de control, dejándolas en segundo plano y luego reanudarse en cualquier momento e incluso en cualquier lugar. Solo necesita comenzar su sesión en la pantalla y cuando lo desee, separarla del pseudo terminal (o el terminal de control) y el inicio de sesión. Cuando sienta, puede volver a iniciar y reanudar la sesión.

Iniciar una sesión de pantalla

Después de escribir 'pantalla' Comando, estará en una nueva sesión de pantalla, dentro de esta sesión puede crear nuevas ventanas, atravesar las ventanas, bloquear la pantalla y hacer muchas más cosas que puede hacer en un terminal normal.

$ pantalla 
Sesión de pantalla de inicio en Linux

Una vez que se inicia la sesión de pantalla, puede ejecutar cualquier comando y mantener la sesión ejecutándose separando la sesión.

Ejecutar comandos en la sesión de pantalla
Separe una pantalla

Justo cuando desea cerrar la sesión de la sesión remota, pero desea mantener viva la sesión que creó en esa máquina, entonces lo que debe hacer es separar la pantalla del terminal para que no le quede el terminal de control de control. Después de hacer esto, puede cerrar sesión de forma segura.

Para separar una pantalla desde el terminal remoto, simplemente presione "Ctrl+A" seguido inmediatamente por "d" y volverás al terminal al ver el mensaje de que la pantalla está separada. Ahora puede inicio de sesión de forma segura y su sesión se dejará viva.

Descargar la sesión de pantalla de Linux
Reanudación de la sesión de pantalla separada

Si desea reanudar una sesión de pantalla separada que dejó antes de cerrar la sesión, simplemente vuelva a iniciarlo en terminal remoto y escriba nuevamente y escriba "Screen -r" En caso de que solo se abra una pantalla, y si se abren múltiples sesiones de pantalla "Screen -r".

$ pantalla -r $ pantalla -r  
Reanudar la sesión de pantalla separada

Para obtener más información sobre el comando de pantalla y cómo usarlo, simplemente siga el enlace: Use el comando de pantalla para administrar las sesiones de terminal de Linux

2. Uso de TMUX (multiplexor terminal) para mantener las sesiones de SSH en funcionamiento

Tmux es otro software que se crea para ser un reemplazo para pantalla. Tiene la mayoría de las capacidades de pantalla, con pocas capacidades adicionales que lo hacen más poderoso que la pantalla.

Permite, aparte de todas las opciones ofrecidas por la pantalla, dividir paneles horizontal o verticalmente entre múltiples ventanas, cambiar el tamaño de los paneles de las ventanas, el monitoreo de la actividad de la sesión, la secuencia de comandos con modo de línea de comandos, etc. Debido a estas características de TMUX, ha disfrutado de una amplia adopción por casi todas las distribuciones de Unix e incluso se ha incluido en el sistema base de OpenBSD.

Iniciar una sesión de TMUX

Después de hacer SSH en el host remoto y escribir tmux, Ingresará en una nueva sesión con una nueva ventana que se abre frente a usted, en la que puede hacer cualquier cosa que haga en un terminal normal.

$ tmux 
Iniciar sesión de terminal TMUX

Después de realizar sus operaciones en el terminal, puede separar esa sesión del terminal de control para que se entregue el fondo y pueda inicio de seguridad de manera segura.

Realizar comandos de Linux en la sesión TMUX
Separar la sesión de TMUX desde la terminal

O puedes correr "Tmux se separa" Al ejecutar la sesión TMUX o puede usar el atajo (CTRL+B Entonces D). Después de esto, su sesión actual se separará y volverá a su terminal desde donde puede iniciar sesión de manera segura.

$ tmux separar 
Separe la sesión de TMUX en Linux
Reanudando la sesión cerrada de TMUX

Para volver a abrir la sesión que se separó y dejó como es cuando cotizó del sistema, simplemente vuelva a iniciar la máquina remota y escriba "Tmux adjunto" para volver a la sesión cerrada y seguirá estando corriendo.

$ tmux adjunto 
Reanudar la sesión cerrada de TMUX

Para obtener más información sobre TMUX y cómo usarlo, simplemente siga el enlace: Use el multiplexor TMUX Terminal para administrar múltiples terminales de Linux.

3. Usando el comando nohup para seguir ejecutando sesiones ssh

Si no estás tan familiarizado con pantalla o tmux, puedes usar nohup y envíe su comando de larga ejecución al fondo para que pueda continuar mientras el comando siga ejecutando en segundo plano. Después de eso, puede iniciar sesión de forma segura.

Con el comando nohup le decimos al proceso que ignore el Suspiro Señal que se envía por sesión SSH sobre la terminación, lo que hace que el comando persista incluso después del cierre de sesión de la sesión. En la sesión de sesión de sesión, el comando se disuade de controlar el terminal y se mantiene en funcionamiento como proceso de demonio.

Ejecución del comando usando nohup en segundo plano

Aquí, es un escenario simple en el que hemos ejecutado el comando de búsqueda para buscar archivos en el fondo en la sesión ssh usando nohup, después de lo cual la tarea se envió a fondo con devolución rápida de inmediato dando inmediatamente Pid y trabajo IDENTIFICACIÓN del proceso ([JOBID] PID).

# Nohup Find / -Type F $ GT; files_in_system.Fuera 2> 1 y 
Ejecutar el comando Linux en el fondo
Reanudando la sesión para ver si el trabajo aún se está ejecutando

Cuando vuelva a iniciarlo, puede verificar el estado del comando, volver a ponerlo en primer plano usando 'FG %JOBID' para monitorear su progreso y así sucesivamente. A continuación, la salida muestra que el trabajo se completó, ya que no se muestra en el re-login, y ha dado la salida que se muestra.

# FG %JOBID 
Ejecutar el comando Linux en el fondo

4. Uso del comando de repente para mantener las sesiones de SSH en funcionamiento

Otra forma elegante de dejar que su comando o una sola tarea se ejecute en segundo plano y permanecer viva incluso después de la sesión o la desconexión de la sesión es utilizando renegar de.

Renegar de, Elimina el trabajo de la lista de trabajo del proceso del sistema, por lo que el proceso está protegido de ser asesinado durante la desconexión de la sesión, ya que no recibirá Suspiro por el caparazón cuando se cierne.

La desventaja de este método es que debe usarse solo para los trabajos que no necesitan ninguna entrada del stdin Y tampoco necesita escribir para stdout, a menos que redirige específicamente la entrada y salida de trabajos, porque cuando el trabajo intentará interactuar con stdin o stdout, se detendrá.

Ejecutar el comando usando la muerte en segundo plano

A continuación, enviamos silbido comandar el fondo para que UT siga ejecutándose y se elimine de la lista de trabajo. Como se ve, el trabajo se suspendió por primera vez, después de lo cual todavía estaba en la lista de empleo como ID de proceso: 15368.

$ ping tecmint.com> Pingout & $ Jobs -l $ Desnown -h %1 $ PS -ef | ping grep ping 
Ejecutar comandos de Linux usando Desglose

Después de que esa señal de reposo se pasó al trabajo, y se eliminó de la lista de trabajo, aunque todavía se estaba ejecutando en segundo plano. El trabajo aún se ejecutaría cuando se vuelva a iniciar el servidor remoto como se ve a continuación.

$ PS -EF | ping grep ping 
Verificar el estado del trabajo

5. Uso del comando setSid para poner en ejecución las sesiones SSH

Otra utilidad para lograr el comportamiento requerido es setsid. Nohup tiene una desventaja en el sentido de que el grupo de proceso del proceso sigue siendo el mismo, por lo que el proceso que se ejecuta con nohup es vulnerable a cualquier señal enviada a todo el grupo de proceso (como Ctrl + C).

setsid Por otro lado, asigna un nuevo grupo de proceso al proceso que se está ejecutando y, por lo tanto, el proceso creado está totalmente en un grupo de proceso recientemente asignado y puede ejecutar de manera segura sin temor a ser asesinado incluso después de la sesión de sesión de sesión.

Ejecutar cualquier comando usando setSid

Aquí, muestra que el proceso 'Dormir 10m' se ha separado del terminal de control, desde el momento en que se ha creado.

$ setsid sleep 10m $ ps -ef | Grep Sleep 
Ejecutar el comando Linux usando setsid

Ahora, cuando vuelvas a iniciar la sesión, aún encontrarás este proceso en ejecución.

$ PS -EF | Grep [S] Leep 
Proceso de Linux con fondo

Conclusión

En qué formas se puede pensar para mantener su proceso en funcionamiento incluso después de inicio de sesión desde la sesión SSH? Si hay alguna otra forma eficiente y eficiente en la que se le ocurra, mencione en sus comentarios.