GNU/Linux >> Tutoriales Linux >  >> Linux

Reptyr:mueva un proceso en ejecución de una terminal a otra sin cerrarlo

Digamos que está ejecutando un proceso en un servidor remoto a través de una sesión SSH desde su sistema local. No sabía que el trabajo remoto tardaría mucho en completarse. Solo desea dejar el trabajo en ejecución en el servidor remoto y cerrar la sesión SSH sin finalizar el trabajo remoto, y luego volver a adjuntarlo a la sesión SSH más tarde o al día siguiente. Por supuesto, puede iniciar el trabajo en screen/tmux sesión, desconectarse de la sesión de pantalla sin salir del trabajo remoto y salir de la sesión SSH. Pero si olvidó iniciar la sesión de pantalla en primer lugar, no hay forma de volver a conectarla al proceso en ejecución más adelante. Una vez que cerró la sesión SSH, los procesos en ejecución también se cerrarán en el sistema remoto. Entonces, ¿qué harás en tales casos? No hay problema. Aquí es donde Reptyr el comando viene en ayuda.

Reptyr es una herramienta de línea de comandos para mover procesos en ejecución entre ptys. Simplemente inicie un proceso que lleva mucho tiempo completar en su sistema remoto a través de una sesión SSH desde su computadora de escritorio o portátil local, y cierre la sesión SSH, vaya a casa y vuelva a conectar el proceso en ejecución al día siguiente. Además, puede migrar/mover fácilmente un proceso de ejecución prolongada de una Terminal a otra de manera instantánea sin tener que terminarlo. ¿Suena útil? ¡Claro que lo es!

Descargar - Libro electrónico gratuito:"6 herramientas útiles de línea de comandos de Linux para administradores de sistemas"

Este breve tutorial describe cómo mover un proceso en ejecución a una nueva terminal usando el comando Reptyr.

Instala Reptyr en tus sistemas remotos

Nota:  Su sistema remoto debe tener tmux o pantalla instalado para mover el proceso en ejecución.

En Arch Linux y sus derivados, ejecute:

$ sudo pacman -S reptyr

En sistemas basados ​​en DEB, ejecute el siguiente comando para instalar Reptyr:

$ sudo apt-get install reptyr

Para instalar screen o tmux, ejecute:

$ sudo apt-get install tmux screen

En RHEL/CentOS/Scieintific Linux/Fedora, reptyr no está disponible en los repositorios. Entonces, puede compilarlo e instalarlo como se muestra a continuación.

Instalar los siguientes requisitos previos:

$ sudo yum install git tmux screen
$ sudo yum groupinstall 'development tools'

Git clone el repositorio reptyr con el comando como usuario root:

$ git clone https://github.com/nelhage/reptyr.git

Ir al directorio reptyr:

$ cd reptyr/

Ejecute los siguientes comandos para compilarlo e instalarlo.

$ make
$ sudo make install

Compilé e instalé Reptyr desde la fuente en la edición de servidor de 64 bits de CentOS 7, y funcionó bastante bien como se describe anteriormente.

Mover un proceso en ejecución de una terminal a otra sin cerrarlo usando Reptyr

Por lo general, nos conectamos al servidor remoto desde cualquier sistema local a través de SSH, como se muestra a continuación.

# ssh [email protected]_Of_remote_system

Después de conectarse al sistema remoto, inicie un proceso de ejecución prolongada. Por ejemplo, voy a descargar la ISO de escritorio de Ubuntu 16.04 usando wget comando.

# wget http://cdimage.ubuntu.com/daily-live/current/xenial-desktop-amd64.iso

Salida de muestra:

Como puede ver en la captura de pantalla anterior, el tamaño total de la descarga es de 1,5 GB y tardará más de 90 minutos en completarse.

No quiero esperar mucho más, y tampoco quiero dejar el trabajo remoto.

Entonces, lo que voy a hacer es iniciar una pantalla o tmux sesión en una nueva Terminal, usa reptyr utilidad para capturar el proceso en ejecución dentro de la pantalla o sesión tmux. Finalmente, finalizaré ambas sesiones ssh y las volveré a conectar al proceso en ejecución cuando lo desee.

Permítanos abrir una nueva ventana de Terminal o una nueva pestaña e iniciar una sesión de pantalla o tmux escribiendo pantalla o tmux en la Terminal:

# screen

o

# tmux

Como puede ver en la captura de pantalla anterior, la sesión de pantalla se ha iniciado y se está ejecutando.

Ahora, busquemos los procesos en ejecución desde la nueva Terminal usando el siguiente comando:

# ps -a

Salida de muestra:

 PID TTY TIME CMD
 2320 pts/0 00:00:11 wget
 2343 pts/1 00:00:00 screen
 2358 pts/2 00:00:00 ps

Anote el PID para el wget proceso y adjunte el proceso en ejecución dentro de la sesión de pantalla usando el comando:

# reptyr 2320

¡Listo! Como puede ver en la captura de pantalla anterior, el proceso wget se movió (migró) de la Terminal antigua a la nueva ventana de la Terminal (la que se ejecuta con la sesión de pantalla).

Una vez que movió el proceso en ejecución desde la Terminal original, se cerrará inmediatamente y comenzará a continuar donde lo dejamos en la nueva Terminal.

Ahora, puede desconectar o cerrar la terminal de manera segura y el trabajo continuará ejecutándose en su servidor remoto.

Para desconectarse de la pantalla o de la sesión de tmux, presione CTRL+A+D .

Después de desconectarse de la sesión de pantalla, aparecerá el siguiente mensaje.

[detached from 2344.pts-1.server1]

Para volver a conectar el proceso en ejecución, SSH a su sistema remoto:

# ssh [email protected]

Aquí. 192.168.1.150 es la dirección IP de mi servidor remoto.

Y ejecute lo siguiente si usa la sesión de pantalla:

# screen -Dr

Para la sesión tmux, ejecute:

# tmux attach

¡Listo! El proceso en ejecución se ha vuelto a conectar y verá allí que el proceso aún se está ejecutando.

Como puede ver en la captura de pantalla anterior, el trabajo de wget no se interrumpe ni finaliza, y sigue ejecutándose. Continuará ejecutándose mientras su sistema remoto esté activo y funcionando.

Resumen

Para resumir, Reptyr es una herramienta muy, muy importante y útil para los administradores de sistemas Linux de cualquier nivel. En caso de que esté harto de un proceso que tomó mucho tiempo en completarse, Reptyr definitivamente será útil. Simplemente abra una nueva ventana de Terminal, SSH a su servidor remoto, encuentre la ID de los procesos en ejecución y muévalos de manera segura dentro de la pantalla o sesiones tmux, y salga de la sesión SSH. Para obtener más detalles, consulte los enlaces adjuntos al final de este tutorial.

Lectura sugerida:

  • Sesión Tmux de inicio automático en el sistema remoto al iniciar sesión a través de SSH
  • Cómo mostrar la información del proceso mediante Procs en Linux
  • Tmate:comparta su terminal al instante con cualquier persona desde cualquier lugar
  • Cómo cambiar el tipo y tamaño de fuente de la consola Linux
  • Cómo bloquear sesiones de consola virtual en Linux
  • Cómo cambiar entre TTY sin usar teclas de función en Linux

Eso es todo por ahora amigos. Pues bien, los dejo para que se familiaricen con esta útil herramienta. Pruébalo y no te decepcionará.

Enlaces de referencia:

  • Reptyr GitHub
  • Guía Reptyr

Linux
  1. ¿Cómo mover todos los archivos (incluidos los ocultos) de un directorio a otro?

  2. Linux:¿mover un volumen lógico de un grupo de volúmenes a otro?

  3. ¿Cómo ver la salida de un proceso en ejecución en otra sesión de Bash?

  4. ¿Cómo copiar configuraciones de una máquina a otra?

  5. ¿Copiar las últimas líneas N de un archivo a otro?

Reptyr:mueva un proceso en ejecución de una terminal a otra sin cerrarlo

¿Cómo mover cuentas de un servidor cPanel a otro servidor cPanel?

Copie la estructura de carpetas (sin archivos) de una ubicación a otra

¿Cómo mover (y sobrescribir) todos los archivos de un directorio a otro?

Ejecutar scripts desde otro directorio

¿Cómo adjunto una terminal a un proceso desconectado?