Linux: finalizar la pantalla una vez que finalice el proceso interno

Linux: finalizar la pantalla una vez que finalice el proceso interno

En este momento estoy ejecutando un proceso dentro de la pantalla GNU. La pantalla se inicia con el comando screen -dmS screennamey se adjunta con screen -r screenname. Se inicia un proceso en la sesión de pantalla y se finaliza después de un tiempo.

¿Cómo puedo hacer para que la pantalla termine cuando finalice el proceso interno?

Nota: No preferiría un bucle, así que estoy buscando una alternativa. A veces comienzo el proceso siguiéndolo & exit, pero eso nunca se ejecuta si lo uso kill -9 piden el proceso.

Respuesta1

Inicie el proceso con exec, por lo que será lo único dentro de la pantalla (reemplaza el shell en lugar de regresar al shell una vez finalizado).

Respuesta2

Prueba esto:

screen -dmS screenname sleep 5
sleep 3
screen -ls
sleep 3
screen -ls

En el primero screen -ls, deberías ver tu sesión de pantalla. En el segundo, debería desaparecer. La pantalla saldrá automáticamente cuando se cierre la última ventana. Dado que solo está ejecutando un único programa dentro de la pantalla, la última (y única) ventana de la sesión de pantalla se cerrará cuando el programa salga. Si está iniciando el programa adjuntándolo a la sesión de pantalla y luego escribiendo el comando en el símbolo del shell dentro de la sesión de pantalla, entonces la pantalla está esperando a que se cierre el shell. Puede hacer que esto suceda cuando el programa finalice escribiendo exec PROGRAMen lugar de simplemente PROGRAMen el símbolo del shell (en realidad, esto saldrá del shell y lo reemplazará con PROGRAM).

Si todo lo que necesita es la capacidad de separar la pantalla y nada más, una alternativa liviana esdesconectar.

Respuesta3

Puede iniciar la sesión de pantalla con el nombre de un comando, por ejemplo, screen -dmS session vimabrirá una sesión de pantalla que sale con vim. Desde una sesión de pantalla existente, puede utilizar execpara obtener el mismo efecto:.

información relacionada