Manter um programa em execução após o fechamento de um console, após o início do programa [duplicado]

8

Possível duplicado:
como desanexar um processo completamente do Terminal?

Eu tenho um programa em execução em um console Unix em um computador remoto Unix. Eu (estupidamente) não o executei nohup &e agora preciso fechar o console local.

Existe alguma maneira de continuar funcionando remotamente após o fechamento do console local?

Thrawn
fonte

Respostas:

12

Se o seu shell é bash, eles podem ser usados disown. Ctrl-Z para suspender o processo e, em seguida, disown -hfazer com que ele não receba SIGHUP.

Douglas Leeder
fonte
Solução brilhante. Funcionou :-)
Thrawn
3
Apenas curioso: como o processo está suspenso, isso não deveria ser seguido com bgalgo assim? Ou disown -hretoma também?
Arjan
Isso funcionará se o processo estiver em execução no interior screen? Gostaria de continuar executando o processo regularmente xterm.
vozes
IIRC uma vez renegado que não vai ser conectado a qualquer terminal
Douglas Leeder
5

No Solaris 9, você pode usar nohup -p <pid>para nohup um processo em execução. Aqui está uma explicação interessante da implementação. Não sei se isso foi implementado em outros Unices.

coneslayer
fonte
nohup: opção inválida - p Não funciona no gentoo, ubuntu ou fedora (os unixes em que experimentei isso), mas, no entanto, obrigado :-) É bom saber que o Solaris o possui.
Thrawn
2

Ctrl-Z para suspender o processo e, em seguida, bgfazer com que o programa entre em segundo plano e continue em execução até que seja concluído.

Matrix Mole
fonte
O problema é que, se eu fechar o console, também os processos em segundo plano serão interrompidos. Eu preciso de algo que destaca o processo a partir do console, como nohup faz, mas depois que o processo já foi iniciado :-)
Thrawn
E eu não acho que 'nohup bg' funcionará :-(
Thrawn
1
Eu tentei em um dos meus sistemas e ele continuou funcionando bem quando eu saí (apenas usado du / >> tempcomo o programa de teste), mas entendo estar hesitante se você não quiser perder o programa ou seus resultados.
Matrix Mole
2

Se você puder parar o programa e reiniciá-lo antes de efetuar o logout, pare-o e reinicie-o na tela , o que é obrigatório para qualquer pessoa que utilize conexões remotas para hosts unix.

nerd
fonte
1
Eu acho que o principal problema aqui é precisamente que ele gostaria de não parar o programa.
Gnoupi
1
Sim, eu gostaria que o programa não deve ser interrompido :-)
Thrawn
Eu sugeriria a tela para uso futuro de tal situação (eu praticamente sempre tenho uma sessão de tela em execução em qualquer sistema que possua uma seleção).
Matrix Mole
1
Vários anos depois, percebi que eu era um tolo para não ser usando a tela :-)
Thrawn