Quiero terminar una instancia de GNU screen
mientras preserva el proceso que se ejecuta dentro de él.
Entonces abrí mi programa regular de emulador de terminal y ejecuté la pantalla. Luego usé esa instancia de screen
para ejecutar ./script_x.sh
. Ahora, por cualquier razón, quiero dejar de usar, screen
sin embargo, script_x.sh
aún no he completado su tarea y no estoy dispuesto a perder mi progreso.
¿Puedo mantener vivo el proceso activo para continuar trabajando en él dentro de mi emulador de terminal normal?
screen
sesión.screen
. Quería dejar de usarscreen
. No quería detener el programa que se estaba ejecutando dentroscreen
. Eso es. No sé cómo aclarar la situación o expresarla de manera más simple que esto.Respuestas:
TLDR: Respuesta práctica: No.
Respuesta más larga:
En teoría puedes. Si comenzó algo así
nohup myprog &
desde dentro de la pantalla, continuará ejecutándose. Ignorará una señal de bloqueo y no tendrá ninguna entrada, pero en teoría podría continuar trabajando con ella.En la práctica este no es el caso. Por lo tanto, a menos que desee adjuntar un depurador al proceso en ejecución y reescribir sus identificadores de archivo y asegurarse de que el proceso maneja las señales -1 cuando cierra la pantalla ... la respuesta es no.
Si está listo para hacer esto, tengo un marcador en casa que apunta a [SU] donde alguien hizo exactamente eso . Guardado para la genialidad, no porque sea fácil y trivial de hacer.
fuente
disown
o en un nivel inferior) para que noSIGHUP
se envíe ninguno cuando el proceso principal fallezca. Volver a conectar E / S es otra cosa: es donde entra el depurador.nohup
si se encuentra en una cáscara de control de trabajos (comobash
,ksh
,csh
,zsh
,ash
, etc.). Si todavía está utilizando un shell de control que no es de trabajo como Bourne,sh
tal vez sea hora de actualizar.Puede intentar usar
reptyr
para volver a conectar la aplicación que ya se está ejecutando en un terminal diferente. Sin embargo, tiene algunos problemas con el proceso de envío a segundo plano.Acabo de probarlo (comenzar en el
htop
interiorscreen
,reptyr
a otra terminal, matarscreen
), y parecía funcionar bien. Aún así, es una solución realmente hacky, así que no hay garantías.fuente
Sí (si "matar" no es realmente matar), para eso es exactamente para qué sirve la pantalla. Debe consultar el manual y probar cuál de estos se ajusta a sus necesidades:
Entonces, lo que necesitará son las opciones de línea de comando -D / -d -R / -r de la pantalla, dependiendo de su elección.
fuente