GNU/Linux >> Tutoriales Linux >  >> Linux

4 formas de mantener un comando en ejecución después de cerrar la sesión de SSH

Digamos que está accediendo a otro sistema de forma remota a través de SSH. Desea ejecutar un comando que tarda mucho tiempo en finalizar y luego salir de la sesión SSH pero dejar el comando ejecutándose incluso si ya no está conectado con el sistema remoto. ¿Cómo haces eso? Como sabrá, una vez que salga de SSH, todos los trabajos en ejecución finalizarán. ¿Empezarías el trabajo desde el principio? No tienes que hacerlo. Aquí he proporcionado 4 métodos para mantener un comando en ejecución después de cerrar la sesión de ssh. Sigue leyendo.

Mantener un comando ejecutándose después de cerrar la sesión de SSH en Linux

Podría haber muchas maneras de hacer esto. Sin embargo, creo que los siguientes métodos son fáciles y sencillos.

Método 1 - Uso de la pantalla

La pantalla tool, un administrador de ventanas de pantalla completa con emulación de terminal VT100/ANSI, le permite desconectarse de forma segura de la sesión SSH sin salir del trabajo remoto. Será útil para aquellos que trabajan con múltiples servidores remotos. El comando de pantalla viene preinstalado en la mayoría de los sistemas operativos Linux. Por si acaso, si no está instalado, puede instalarlo usando el administrador de paquetes de su distribución.

En Arch Linux y derivados:

$ sudo pacman -S screen

En RHEL, CentOS y otros sistemas basados ​​en RPM:

$ sudo yum install screen

En Debian, Ubuntu y otros sistemas basados ​​en DEB:

$ sudo apt-get install screen

En SUSE/OpenSUSE:

$ sudo zypper install screen

Después de instalar screen en sus sistemas remotos, inicie la sesión de screen:

$ screen

La sesión de pantalla se ha iniciado ahora. Ahora ejecute cualquier trabajo o tarea que desee realizar en su sistema remoto.

Voy a descargar la imagen de Ubuntu 16.04:

$ wget http://mirror.waia.asn.au/ubuntu-releases/xenial/ubuntu-16.04.2-desktop-amd64.iso

Ubuntu 16.04 ISO tiene un tamaño aproximado de 1,5 GB. La descarga tardará casi una hora en una conexión de banda ancha normal. No tienes que esperar tanto. Simplemente deje el proceso de descarga ejecutándose en el sistema remoto y salga de la sesión de pantalla presionando “Ctrl-A” seguido de “d“ . Verá una salida similar a la siguiente.

[detached from 1365.pts-0.server]

Después de desconectarse de la sesión de pantalla, puede desconectarse del sistema remoto. El trabajo remoto seguirá ejecutándose en el servidor.

Puede volver a adjuntar a la sesión de pantalla en cualquier momento usando el comando:

$ screen -r

Verá que el proceso aún se está ejecutando allí.

Si tiene más de una sesión de pantalla, debe escribir el ID de la sesión de pantalla para volver a adjuntarla. Para ver el número de sesiones de pantalla, ejecute:

$ screen -ls

La salida de muestra sería:

There are screens on:There are screens on: 
     1382.pts-0.server (Saturday 15 July 2017 04:39:51  IST) (Detached) 
     1365.pts-0.server (Saturday 15 July 2017 04:38:44  IST) (Detached)
2 Sockets in /var/run/screen/S-sk.

Ahora, vuelva a adjuntar a la sesión de pantalla deseada, diga 1382 , ejecuta:

$ screen -r 1382

Para obtener más detalles, consulte las páginas man.

$ man screen
Descarga recomendada - Hoja de referencia gratuita:"Hoja de referencia de la línea de comandos de Linux"

Método 2 - Usando tmux

El tmux es un multiplexor de terminales que permite crear, acceder y controlar varios terminales desde una única pantalla. Una sesión tmux se puede desconectar de una pantalla y continuar ejecutándose en segundo plano y luego volver a adjuntarse. Al igual que la herramienta Screen, también puede usar tmux para desconectarse de una sesión SSH sin salir de los trabajos remotos. El comando Tmux viene preinstalado en la mayoría de los sistemas operativos Linux. Por si acaso, si no está instalado, puede instalarlo usando el administrador de paquetes de su distribución.

En Arch Linux y derivados:

$ sudo pacman -S tmux

En RHEL, CentOS y otros sistemas basados ​​en RPM:

$ sudo yum install tmux

En Debian, Ubuntu y otros sistemas basados ​​en DEB:

$ sudo apt-get install tmux

En SUSE/OpenSUSE:

$ sudo zypper install tmux

Después de instalar tmux, inicie la sesión de tmux usando el comando:

$ tmux

Ahora, comienza tu tarea o trabajo. Luego desconéctese de forma segura de la sesión tmux sin salir de los trabajos remotos presionando "CTRL-b" seguido de "d" . Esto separará su sesión tmux pero dejará lo que está haciendo en esa sesión ejecutándose en segundo plano. Eso significa que todos los controles remotos se ejecutarán incluso si está desconectado de la sesión.

Para listar las sesiones disponibles, ejecute:

$ tmux ls
0: 1 windows (created Sat Jul 15 16:51:35 2017) [134x33]
1: 1 windows (created Sat Jul 15 16:53:58 2017) [134x33]

Puede volver a conectarse a la sesión de tmux utilizando el ID de sesión respectivo como se muestra a continuación:

$ tmux attach -t 0

Para obtener más detalles, consulte las páginas man.

$ man tmux

Método 3:uso de Reptyr

¿Qué sucede si olvidó iniciar los comandos en screen/tmux en primer lugar? No hay problema. Aquí es donde Reptyr viene en ayuda. Reptyr lo ayuda a mover procesos en ejecución entre ptys. Ya hemos publicado una guía detallada sobre Reptyr. Echa un vistazo al siguiente enlace.

  • Reptyr:mueva un proceso en ejecución de un terminal a otro sin cerrarlo

Método 4 - Usar nohup

nohup , significa No h enfadadoup , es otra utilidad de línea de comandos que lo ayuda a ejecutar comandos de Linux incluso después de desconectarse de las sesiones de SSH. Dado que es parte de GNU coreutils, no tiene que instalarlo. Viene preinstalado en todas las distribuciones de Linux.

El uso es absolutamente fácil. Después de iniciar sesión en su sistema remoto, todo lo que tiene que hacer es:

$ nohup <command> &

Sí, es así de simple.

Ejemplo:

$ nohup wget http://mirror.waia.asn.au/ubuntu-releases/xenial/ubuntu-16.04.2-desktop-amd64.iso &

Ahora, puede salir de la sesión SSH. El trabajo remoto seguirá ejecutándose.

Inicie sesión en el sistema remoto y ejecute lo siguiente para ver la lista de trabajos en ejecución.

$ jobs -l
[1]+ 1421 Running nohup wget http://mirror.waia.asn.au/ubuntu-releases/xenial/ubuntu-16.04.2-desktop-amd64.iso &

De forma predeterminada, las salidas se agregarán a 'nohup.out'. Por supuesto, puede cambiar el archivo de salida.

Aquí hay otro ejemplo.

$ nohup find -size +10M > log.txt &

El comando anterior encontrará los archivos con un tamaño superior a 10M y escribirá la salida en el archivo log.txt.

Para obtener más detalles, consulte las páginas man.

$ man nohup

Y, eso es todo por ahora amigos. ¿Tienes algo en mente? No dude en hacérmelo saber en la sección de comentarios a continuación. Más cosas buenas por venir. ¡Sigue visitando!

¡Salud!


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

  2. Ssh:¿mantener los procesos en ejecución después de que la sesión de Ssh se desconecte?

  3. ¿Qué comando te permite ver los archivos ocultos en SSH?

  4. ¿Cómo hacer que un programa continúe ejecutándose después de cerrar la sesión de ssh?

  5. SSH:cómo incluir el comando -t en el archivo ~/.ssh/config

Comando de pantalla de Linux:mantenga los procesos en ejecución a pesar de una conexión interrumpida

4 formas de cerrar sesión en una sesión de escritorio de Ubuntu

Cómo mantener las sesiones SSH remotas en ejecución después de la desconexión

Cómo cerrar la sesión de un usuario fuera de SSH en Linux

Cómo instalar y usar el comando de pantalla Ubuntu 20.04

¿Cómo aumento el búfer de desplazamiento hacia atrás en una sesión de pantalla en ejecución?