Pregunta Mover un proceso ya en ejecución a la pantalla


Mi trabajo de oficina me ve rutinariamente conectado a una caja de Linux a través de VNC.

A veces comienzo un trabajo remoto en la consola y luego me doy cuenta de que se ejecuta mucho más tiempo de lo esperado. (Debería haber comenzado ese bajo Pantalla en primer lugar ...)

No quiero mantener mi estación de trabajo funcionando durante la noche solo para mantener abierta la sesión de VNC; Me gustaría mover ese trabajo remoto que ya se está ejecutando a una sesión de Pantalla (en el cuadro de control remoto), para poder apagar la estación de trabajo (y reconectarme a la mañana siguiente).

¿Cómo puede hacerse esto, en todo caso?


205
2017-08-18 11:03


origen


y es un tonto, serverfault.com/questions/49877/… - Parece que no se puede hacer. - Paul Dixon
superuser.com/questions/28568/screen-a-running-process - warren
Ver también ¿Cómo puedo rechazar un proceso en ejecución y asociarlo a un nuevo shell de pantalla?. - dma_k
Posible duplicado de ¿Puedo nohup / screen un proceso ya iniciado? - scai
Búsqueda de guión screenify. - Vashu


Respuestas:


Mira esto reptyr, que hace exactamente eso. La página github tiene toda la información.

reptyr - Una herramienta para programas de "re-formación".

reptyr es una utilidad para tomar una   programa en ejecución existente y adjuntar   a una nueva terminal. Comenzó un   proceso de larga duración sobre ssh, pero   tengo que irme y no quiero   interrumpirlo? Solo inicia una pantalla, usa   reptyr para agarrarlo, y luego matar al   Sesión de ssh y cabeza en casa.

USO

reptyr PID

"reptyr PID" agarrará el proceso   con ID PID y adjuntarlo a su   terminal actual

Después de adjuntar, el proceso tomará   entrada y escritura de salida a la nueva   terminal, incluyendo ^ C y ^ Z.   (Desafortunadamente, si lo haces de fondo,   todavía tendrás que ejecutar "bg" o   "fg" en la antigua terminal. Esto es   probablemente imposible de arreglar en una   forma razonable sin parchear su   cáscara.)


192
2018-06-28 09:25



Si, como yo, miró el enlace de arriba y consideró brevemente la instalación del programa desde su origen, no se preocupe: es solo una apt-get de distancia en los sistemas Debian. - mlissner
Esto funciona muy bien, ¿cómo no he visto esto antes? - deed02392
¡Esto es increíble! ¡Lo votaría 10 veces si pudiera! Además, reptyr también está disponible en los repositorios de RedHat. Sólo 'yum instalar' para obtenerlo. - Mark J. Bobak
No funciona excepto en los casos más triviales: Unable to attach. (This most commonly means that 11690 has a suprocesses) - Mehrdad
Al menos como root, puedes usar reptyr -T PID - ChristophK


No puedes hacer esto, fácilmente. Yo sugeriría convertirlo en un hábito para iniciar la pantalla como lo primero que haces después de abrir una consola.

Sin embargo, para su problema real, hay otra cosa que podría intentar: después de haber iniciado su trabajo desde el terminal, escríbalo en segundo plano escribiendo ctrl-z y luego bg. Después de eso, separe el trabajo de su shell padre; en bash lo harías disown -h %<jobid>. Después de eso, puede cerrar la terminal de manera segura y el trabajo continuará ejecutándose.


42
2017-08-18 11:11



Esto funcionó muy bien para mi caso. Reptyr y Retty no lograron agarrar el proceso, pero todo lo que necesitaba era poder cerrar una terminal y dejar que el proceso se ejecutara. - STW
Para tu información: después de desconocer-ing el proceso puede ser reptyr-ed por dentro pantalla. - Adam
Esto mató a mi programa en ejecución :( - Mehrdad


Mientras usa Linux, ¿qué hay de usar retty dentro del proceso de pantalla recién lanzado?

$ screen -S my_process
$ retty $(pgrep my_process)
/redraw

HTH

aclamaciones,


37
2017-08-18 12:09



No sabía de retty, gracias. Sin embargo, para el tipo de trabajos de larga duración que tengo en mente, estoy un poco renuente a usar una herramienta que se refiere a sí misma como "muy poco probada". Voy con la solución del conde.
no ver retty en Gentoo - Sergei
no puede adjuntar a 4858 - Arnold Roa