às vezes, executo um aplicativo no terminal gnome, mas, de repente, tenho que reiniciar o gnome ou algo assim. Eu acho que a resposta para a pergunta também é útil, então eu quero desconectar do SSH onde algo está acontecendo.
A árvore terminal do Gnome fica assim:
gnome-terminal
bash
some-boring-process
Can I 'desconexão' bash
de gnome-terminal
(ou desanexar some-boring-process
do bash e redirecionar o seu lugar de saída)? Se eu matar gnome-terminal
, bash
será morto a todos os seus subprocessos
Respostas:
Se
some-boring-process
estiver em execução na sua sessão atual do bash:ctrl-z
para fornecer o prompt do bashbg
jobs
comandodisown -h %1
(substitua o número do trabalho real lá).Isso não faz nada para redirecionar a saída - você precisa pensar nisso ao iniciar seu processo chato. [Editar] Parece haver uma maneira de redirecioná-lo https://gist.github.com/782263
Mas, falando sério, olhe para a tela. Tenho shell em um servidor remoto que está em execução há meses.
fonte
screen
por vezes, embora tem seus problemas e eu não quero usá-lo para cada sessão de festa na minha vidabash: bg: current: no such job
?É exatamente para isso que a tela e o tmux foram criados. Você executa o shell dentro da sessão screen / tmux e pode desconectar / reconectar à vontade. Você também pode ter várias sessões de shell executando dentro de um terminal gnome.
fonte
screen
tem seus problemas e eu não me sinto como usá-lo para todas as sessões de festa na minha vidascreen
,tmux
Oudtach
(possivelmente comdvtm
) são todos grandes para isso, mas se é algo que você não pensou em usar um desses, você pode ser capaz de alavancagemnohup
.fonte
screen
tem seus problemas e eu não me sinto como usá-lo para todas as sessões de festa na minha vidanohup
funciona em um processo em execução usando a-p
opção (se disponível).-p
opçãonohup
nas páginas de manual; em que sistema você está?tmux
, usei a-p
opção em uma caixa Solaris. Também tenho vagas lembranças de fazê-lo em uma caixa híbrida do CentOS (possivelmentezsh
possui um suporte interno que suporte isso?), Mas não consigo encontrar documentos sobre isso.bash
nemzsh
no meu sistema Ubuntu Linux fornecernohup
.Se você deseja continuar interagindo com o processo filho, em vez de apenas realizá -lo e mantê-lo em andamento, existe realmente um programa chamado retty, que é uma prova de conceito para "roubar" um processo de seu tty atual e conectá-lo novamente ao atual.
No entanto, ele faz algumas coisas horríveis, incluindo colar algum código de montagem na pilha do aplicativo reconectado. E esse código não foi atualizado para x86_64.
Há outro programa que adota uma abordagem talvez melhor, congelando o processo no espaço do usuário para um arquivo, do qual ele pode ser restaurado posteriormente (possivelmente em outro tty.) Isso é criopídeo e esse projeto também parece ter parado no fase de prova de conceito e não funciona com o Linux moderno como o código está. Ah bem.
Apenas pensei que isso deveria estar aqui para ser completo. Se você não se importa em recorrer a um vodu horrível, isso está dentro do reino da possibilidade - pelo menos, da possibilidade teórica.
fonte
Se eu acionar algo que eu quero terminar, não importa o que aconteça (com exceção da reinicialização do sistema), eu uso
nohup
e o executo em segundo plano. Ao contrário da tela e similares, você não pode se reconectar aos processos. No entanto, descobrindo o redirecionamento em qualquer outro local em qualquer saídanohup.out
.Eu uso
screen
quando quero poder mudar de terminal para um processo. Como iniciar um processo em casa / trabalho e mudar para o outro. Como qualquer outra saída da sessão do terminal, será possível rolar a parte superior do buffer.EDIT: Se você já iniciou o processo, você pode
disown
impedir que oHUP
sinal seja enviado quando o processo for fechado.fonte
screen
tem seus problemas e eu não me sinto como usá-lo para todas as sessões de festa na minha vidaVocê pode fazer com que um processo (PID) não receba um sinal HUP quando a sessão do terminal terminar. Use o seguinte comando:
fonte
nohup: invalid option -- 'p'
. Qual versãonohup
você está executando em que tipo de sistema?-p
opção no Linux, portanto, esta resposta é específica para Solaris e AIX. No entanto, é bom saberEsse script desanexa o processo filho do pai e o atribui ao processo init :
fonte