Quero encerrar uma instância do GNU screen
, preservando o processo em execução dentro dele.
Então eu abri meu programa regular de emulador de terminal e executei a tela. Então eu usei essa instância de screen
para executar ./script_x.sh
. Agora, por qualquer motivo, quero parar de usar, screen
mas script_x.sh
ainda não concluí sua tarefa e não estou disposto a perder meu progresso.
Posso manter vivo o processo ativo para continuar trabalhando nele dentro do meu emulador de terminal normal?
screen
sessão.screen
. Eu queria parar de usarscreen
. Eu não queria parar o programa que estava sendo executado dentroscreen
. É isso aí. Não sei como esclarecer a situação ou expressá-la de maneira mais simples que isso.Respostas:
TLDR: Resposta prática: Não.
Resposta mais longa:
Em teoria você pode. Se você iniciou algo como
nohup myprog &
dentro da tela, ele continuará sendo executado. Ele ignorará um sinal de desligamento e não terá nenhuma entrada, mas em teoria você pode continuar trabalhando com ele.Na prática, este não é o caso. Portanto, a menos que você queira anexar um depurador ao processo em execução e reescrever seus identificadores de arquivo, verifique se o processo manipula sinais -1 quando você fecha a tela ... então a resposta é não.
Se você estiver pronto para fazer isso, tenho um marcador em casa apontando para [SU] onde alguém fez exatamente isso . Salvo por grandiosidade, não porque é fácil e trivial de fazer.
fonte
disown
ou em um nível inferior) para que nenhumSIGHUP
seja enviado quando o processo pai terminar. Reconectando i / o é outra coisa altogether-- que é onde o depurador entra.nohup
se você estiver em um shell de controle de trabalho (comobash
,ksh
,csh
,zsh
,ash
, etc.). Se você ainda estiver usando um shell de controle que não seja de trabalho como o Bourne,sh
talvez seja hora de atualizar.Você pode tentar usar
reptyr
para reconectar o aplicativo já em execução a um terminal diferente. No entanto, há alguns problemas com o processo de envio para segundo plano.Acabei de testá-lo (iniciar
htop
no interiorscreen
,reptyr
em outro terminal, matarscreen
) e parecia funcionar bem. Ainda é uma solução realmente hacky, então não há garantias.fonte
Sim (se "matar" não é realmente matar), é exatamente para isso que serve a tela. Você deve verificar o manual e tentar qual deles atende às suas necessidades:
Então, você precisará das opções de tela de linha de comando -D / -d -R / -r, dependendo da sua escolha.
fonte