Você pode revogar a "propriedade" do programa a partir do shell com o disown
built-in:
# press Ctrl+Z to suspend the program
bg
disown
No entanto, isso diz apenas ao shell para não enviar um SIGHUP
sinal ao programa quando o shell sair. O programa reterá qualquer conexão que tenha com o terminal, geralmente como fluxos de entrada, saída e erro padrão. Não há como reconectá-las a outro terminal. (A tela funciona emulando um terminal para cada janela, para que os programas sejam anexados à janela da tela.)
É possível reconectar os descritores de arquivo a um arquivo diferente, anexando o programa em um depurador (por exemplo, usando ptrace
) e fazendo-o chamar open
, dup
e close
. Existem algumas ferramentas que fazem isso; esse é um processo complicado e, às vezes, eles interrompem o processo. As possibilidades incluem (links coletados das respostas para Como posso negar um processo em execução e associá-lo a um novo shell de tela? E Posso nohup / rastrear um processo já iniciado? ):