Linux: Encerre a tela assim que o processo terminar

Linux: Encerre a tela assim que o processo terminar

No momento estou executando um processo na tela GNU. A tela é iniciada com o comando screen -dmS screennamee anexada com screen -r screenname. Um processo é iniciado na sessão de tela e é encerrado após algum tempo.

Como eu faria com que a tela fosse encerrada quando o processo interno terminasse?

Nota: eu não preferiria um loop, então estou procurando uma alternativa. Às vezes eu inicio o processo seguindo & exit-o, mas isso nunca é executado se eu usar kill -9 pidno processo.

Responder1

Inicie o processo com exec, para que seja a única coisa dentro da tela (ele substitui o shell em vez de retornar ao shell após terminar).

Responder2

Experimente isto:

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

No primeiro screen -ls, você deverá ver sua sessão de tela. No segundo, deveria ter desaparecido. A tela sairá automaticamente quando a última janela for fechada. Como você está executando apenas um único programa dentro da tela, a última (e única) janela da sessão da tela será fechada quando o programa for encerrado. Se você estiver iniciando o programa anexando-se à sessão de tela e digitando o comando no prompt do shell dentro da sessão de tela, a tela estará aguardando a saída do seu shell. Você pode fazer com que isso aconteça quando o programa terminar digitando exec PROGRAMem vez de apenas PROGRAMno prompt do shell (na verdade, isso sairá do shell e o substituirá por PROGRAM).

Se tudo que você precisa é a capacidade de separar a tela e nada mais, uma alternativa leve édtach.

Responder3

Você pode iniciar a sessão de tela com o nome de um comando, por exemplo, screen -dmS session vimabrirá uma sessão de tela que sai com o vim. De dentro de uma sessão de tela existente, você pode usar execpara obter o mesmo efeito:.

informação relacionada