Cómo mantener los procesos en ejecución después del cierre de sesión SSH en Linux

Sucede muchas veces que intentamos acceder a una aplicación o contenido, pero solicita volver a iniciar sesión o una ventana emergente que indica que se agotó el tiempo de espera de su sesión. La sesión generalmente se agota cuando el contenido se mantiene inactivo y no se realiza ninguna transacción. Muchas veces se establece la variable “session_time”, que mantiene la conexión activa por el momento. Pero, ¿qué sucede cuando se agota el tiempo de espera de la sesión? Se envía una señal de “SIGNUP” a los procesos que se ejecutan en segundo plano, así como a los procesos que son hijos del proceso principal que se ven obligados a finalizar independientemente de la finalización o finalización parcial de la tarea. Entonces, ¿cómo podemos mantener el proceso en ejecución incluso después del cierre de sesión SSH? En este artículo, explicaré cómo mantener el proceso en ejecución incluso después de desconectar SSH de una terminal Linux (Ubuntu 18.04 y CentOS 7).

1) Comando de pantalla

La utilidad de pantalla proporciona una forma de ejecutar un comando en un sistema Linux, desconectarlo y volver a conectarlo más tarde. La pantalla es particularmente útil si tiene un proceso que requiere mucho tiempo que desea seguir ejecutándose incluso después de cerrar la sesión y aún tiene la opción de volver a adjuntarlo más tarde y desde otra ubicación.

Usando una sola sesión de pantalla

SUGERENCIA: estamos usando el comando ‘superior’ aquí, puede ejecutar el comando en la sesión de pantalla. Presione “ctrl + a” y “d” inmediatamente para DARSE de la sesión de pantalla; Seguirá ejecutándose en segundo plano.
Para entrar en una sesión de pantalla separada

$ screen -r

Mientras está en la pantalla; use ‘salir’ para finalizar la sesión de pantalla por completo.

$ exit
[screen is terminating]

Estás en tu padre bash cáscara; Verifique con ‘screen -r’ si hay alguna sesión de pantalla

$ screen -r

No hay pantalla para reanudar.

Agregar pantalla múltiple

Agregue más sesiones de pantalla y simplemente cambie de una a otra. Hemos visto cómo usar la sesión de pantalla única arriba. Probemos múltiples. Agregar primera pantalla:

$ screen
(run 'top' from screen session; And "ctrl+a" + "d")
$ top	

[detached from 15603.pts-1.centos7]

Ahora, agregue una segunda pantalla:

$ screen

Ejecute cualquier comando de esta nueva sesión de pantalla según su deseo. Probemos ‘df’ para verificar los discos montados. (Ejecute ‘df -hT’ desde la sesión de pantalla; y “ctrl + a” + “d”)

$ df -hT 

[detached from 15652.pts-1.centos7]

BONUS: ¿Los nombres de pantalla son demasiado largos? Pongamos nombre a la sesión; name reemplazará a tty.host.
Esto nombrará la sesión según su deseo; vamos a nombrar una sesión como ‘ping’.

$ screen -S 	
$ screen -S ping

Luego separe la sesión. Verá el nombre de la sesión justo después de pid; en lugar de tty.host

$ ping -c5 www.linoxide.com		
[detached from 15929.ping]
 $ screen -r
There are several suitable screens on:
        15929.ping      (Detached)				
        15652.pts-1.centos7     (Detached)
        15603.pts-1.centos7     (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.

2) Comando de repudio

El comando superior es como buscar en la pestaña de procesos en el administrador de tareas de Windows. El comando superior dice todo sobre los procesos actuales en ejecución, muertos, zombis, etc. También proporciona el uso de la CPU y el promedio de carga de la CPU según la marca de tiempo de 1 min, 5 min, 15 min.

$ top > sys_summary &
$ jobs -l
[1]+ 10832 Stopped (signal) top > sys_summary
$ disown -h %1
$ ps -ef | grep top
root 2416 1979 0 13:40 ? 00:00:03 nautilus-desktop --force
root 10832 10724 0 19:36 pts/2 00:00:00 top
root 10915 10724 0 19:37 pts/2 00:00:00 grep --color=auto top

3) comando nohup

Ejecutemos yum usando nohup para instalar un paquete

$ nohup yum install -y httpd* > ApacheInstall 2>&1 &

Ahora veamos los trabajos que se ejecutan en segundo plano.

$ jobs -l
[1]+  3646 Running                 nohup yum install -y httpd* > ApacheInstall 2>&1 &

4) comando setsid

setsid: crea una sesión y establece el ID del grupo de procesos

setsid () crea una nueva sesión si el proceso de llamada no es un líder de grupo de procesos. El PID del proceso de llamada se configura para procesar la ID de sesión y la ID de grupo respectiva del proceso de llamada.

$ setsid iostat
$ ps -ef | grep iostat

Para terminar el comando use CLT + C

5) Comando Tmux

Tmux es un multiplexor de terminales. Cambiar entre varios programas en una terminal es fácil, sepárelos (siguen ejecutándose en segundo plano) y vuelva a adjuntarlos a una terminal diferente.

Adjuntar y desconectar sesión tmux

$ tmux attach
$ tmux detach

Salir / terminar tmux

$ exit

Nombrar las sesiones mientras las crea

$ tmux new -s

Adjuntar usando el nombre

$ tmux attach

Cambiar entre sesiones usando nombres

$ tmux switch -t

Las sesiones son útiles para separar varios entornos de trabajo. Generalmente tengo un ‘Office’sesión y una sesión’ Inicio ‘; en ‘Office’, Mantengo abierto todo lo que necesito durante mi desarrollo diario, mientras que en’ Inicio ‘, mantengo abiertas las gemas de código abierto actuales para piratearlas en casa.

6) comando byobu

Muchas distribuciones no son compatibles con bayou, siga los comandos a continuación para instalar byobu en CentOS, Ubuntu o Fedora.

$ sudo apt-get install byobu (Ubuntu)
$ sudo yum install byobu (CentOS)

Una vez instalado para su entorno respectivo, use este simple comando a continuación,

$ byobu

Ahora vamos a iniciar el proceso de ejecución prolongada y salir.

$ tar -xvzf community_images.tar.gz

Presione “F6” para ejecutar el proceso en segundo plano.
Después de iniciar sesión en el sistema remoto, simplemente escriba byobu para volver a adjuntar la sesión.

$ byobu

Artículos relacionados

  • Cómo instalar tmux y administrar múltiples terminales Linux
  • 30 ejemplos de uso del comando TOP de Linux para la supervisión
  • 15 Comando de pantalla de Linux para negociar sesiones de terminal
  • Comando Fg / Bg: proceso de gestión de Linux en primer plano / en segundo plano

¿De qué otra manera piensa de mantener el proceso en ejecución incluso después de cerrar la sesión SSH? Mencione en sus comentarios. Gracias por seguir y darle me gusta a nuestros artículos.