Linux: encerra a tela quando o processo termina

0

Agora mesmo estou executando um processo dentro da tela do GNU. A tela é iniciada com o comando screen -dmS screenname e o anexado com screen -r screenname . Um processo é iniciado na sessão de tela e é eliminado depois de algum tempo.

Como terminaria a tela quando o processo interno terminasse?

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

    
por hexacyanide 02.07.2012 / 01:45

3 respostas

3

Inicie o processo com exec , então ele será a única coisa dentro da tela (ele substitui o shell em vez de retornar ao shell depois que ele é feito).

    
por 02.07.2012 / 02:01
5

Tente isto:

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

No primeiro screen -ls , você deve ver sua sessão na tela. No segundo, deveria ter desaparecido. A tela sairá automaticamente quando a última janela for fechada. Como você só está executando um único programa dentro da tela, a última (e única) janela na sessão da tela será fechada quando o programa sair. 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 o shell sair. Você pode fazer isso acontecer quando o programa terminar digitando exec PROGRAM em vez de apenas PROGRAM no prompt do shell (na verdade, isso sairá do shell e o substituirá por PROGRAM ).

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

    
por 02.07.2012 / 02:03
1

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

    
por 02.07.2012 / 02:04