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?

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.


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.


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.


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.