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.