Pantalla de un proceso en ejecución

24

A veces me olvido de ejecutar un programa en una sesión de pantalla y no puedo detenerlo en el medio, y sé que tomará mucho tiempo.

¿Hay alguna manera de detectar un proceso que ya se está ejecutando sin reiniciarlo?

LiraNuna
fuente

Respuestas:

12

Encontré esta respuesta en serverfault de earl :

Sin embargo, para su problema real, no es otra cosa que podría intentar: después de haber lanzado su trabajo desde el terminal, antecedentes, escribiendo ctrl- zy luego bg.
Después de eso, separar el trabajo de él es shell padre - en bash: disown -h %<jobid>. Después de eso, puede cerrar el terminal de manera segura y el trabajo continuará ejecutándose.

Y esta de la misma pregunta de Rob Wells :

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

madriguera
fuente
¿Hay alguna forma de volver a poner el trabajo en primer plano? 'screen' y luego 'fg 1' no me funcionan
Putnik
@ Putnik: ¿hiciste los otros pasos como se describe?
Warren
7

Encontré un duplicado en ServerFault .

Otra solución que no se encuentra en esa publicación es usar retty después de comenzar una sesión de pantalla.

LiraNuna
fuente
55
Borré mi respuesta; Puede (y debe) aceptar su propia respuesta después de 2 días. No dude en citar las partes relevantes aquí, ya que los "duplicados" entre sitios realmente no son engaños debido a las diferentes audiencias.
Jeff Atwood
44
Pero no citó las partes relevantes, según la sugerencia de Jeff. =)
David dice que reinstale a Monica
5

Echa un vistazo a reptyr , que hace exactamente eso. La página de github tiene toda la información.

reptyr - Una herramienta para "volver a hacer pty"

programas

reptyr es una utilidad para tomar un programa en ejecución existente y adjuntarlo a una nueva terminal. ¿Comenzó un proceso de larga duración sobre ssh, pero tiene que irse y no quiere interrumpirlo? Simplemente inicie una pantalla, use reptyr para tomarla, y luego cierre la sesión ssh y diríjase a casa.

USO

reptyr PID

"reptyr PID" tomará el proceso con id PID y lo conectará a su terminal actual.

Después de adjuntar, el proceso tomará la entrada y escribirá la salida en el nuevo terminal, incluidos ^ C y ^ Z. (Desafortunadamente, si lo pone en segundo plano, aún tendrá que ejecutar "bg" o "fg" en la terminal anterior. Es probable que esto sea imposible de solucionar de manera razonable sin reparar su shell).

DaveJohnston
fuente