LINUX

Cómo mantener los procesos en ejecución después de la desconexión de SSH en Linux

Suele pasar que intentamos acceder a una aplicación o contenido, pero nos pide volver a conectarnos o una ventana emergente nos indica que tu sesión ha caducado. En general, la sesión expira cuando el contenido se mantiene inactivo y no se realiza ninguna transacción. A menudo se establece la variable «session_time», que mantiene la conexión activa por el momento. Pero, ¿qué sucede cuando se agota el tiempo de sesión? Se envía una señal de «REGISTRO» 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 de la desconexión de 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 en pantalla

La utilidad de pantalla proporciona una forma de ejecutar un comando en un sistema Linux desconectando y volviendo a conectar más tarde. La pantalla es especialmente útil si tiene un proceso que consume mucho tiempo y 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 una ubicación diferente.

Uso de una sola sesión de pantalla

CONSEJO: Estamos usando el comando «superior» aquí, puede ejecutar el comando en la sesión de pantalla. Presiona «ctrl+a» y «d» inmediatamente para SALIR de la sesión de pantalla; Continuará ejecutándose en segundo plano.
Para entrar en la sesión de pantalla separada

$ screen -r

Mientras que en la pantalla; use «salir» para salir completamente de la sesión de pantalla.

$ exit
[screen is terminating]

Estás en tu bash shell principal; Verifique con «screen -r» si hay alguna sesión de pantalla

$ screen -r

No hay pantalla para reproducir.

Añadir más pantallas

Agregue múltiples sesiones de pantalla y simplemente cambie entre ellas. Vimos cómo usar la sesión de pantalla única arriba. Intentemos más. Agrega la primera pantalla:

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

[detached from 15603.pts-1.centos7]

Ahora, agregue la segunda pantalla:

$ screen

Ejecute cualquier comando de esta nueva sesión de pantalla como desee. 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]

BONIFICACIÓN: ¿Nombres de pantalla demasiado largos? Llamemos a la sesión; el nombre reemplazará a tty.host.
Esto nombrará la sesión como desee; llamemos a una sesión «ping».

$ screen -S 	
$ screen -S ping

Luego separe la sesión. Verá el nombre de la sesión justo después del 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) rechazar el pedido

El comando anterior es como buscar en la pestaña de procesos del administrador de tareas de Windows. El comando anterior cuenta todo sobre los procesos en ejecución actuales, muertos, zombis, etc. También proporciona el uso de la CPU y la carga promedio de la CPU durante 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) El 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) El 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 que llama se establece en el ID de sesión del proceso y el ID de grupo respectivo del proceso que llama.

$ setsid iostat
$ ps -ef | grep iostat

Para finalizar el comando usa CLT+C

5) Comando Tmux

Tmux es un multiplexor terminal. Cambiar entre múltiples programas en una terminal es fácil, sepárelos (siguen ejecutándose en segundo plano) y vuelva a conectarlos a otra terminal.

Adjuntar y separar sesión tmux

$ tmux attach
$ tmux detach

Salir/salir tmux

$ exit

Nombrar sesiones a medida que 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 diferentes entornos de trabajo. Generalmente tengo una sesión «En la oficina» y una sesión «En casa»; en «Office» mantengo abierto todo lo que necesito durante mi día a día de desarrollo, mientras que en «Home» mantengo abiertas las gemas de código abierto actuales para hackear en casa.

6) el 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 ese entorno, use este simple comando a continuación,

$ byobu

Ahora iniciaremos el proceso de larga ejecución y saldremos.

$ tar -xvzf community_images.tar.gz

Presione «F6» para la ejecución en segundo plano del proceso.
Después de conectarse al sistema remoto, simplemente escriba byobu para volver a conectar la sesión.

$ byobu

Artículos similares

¿Qué otra forma crees que puede mantener el proceso en ejecución incluso después de desconectarse de la sesión SSH? Menciona en tus comentarios Gracias por seguirnos y gustar nuestros artículos.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar