Esta questão surgiu bastante um monte ( realmente muito ), mas eu estou encontrando as respostas para ser geralmente incompleto. A pergunta geral é "Por que meu trabalho não é morto quando saio / ssh?", E aqui está o que encontrei. A primeira pergunta é: Quão geral é a seguinte informação? O seguinte parece ser verdadeiro para o Linux moderno Debian, mas estou faltando alguns bits; e o que os outros precisam saber?
Todos os processos filhos, em segundo plano ou não de um shell aberto em uma conexão ssh, são eliminados com SIGHUP quando a conexão ssh é fechada apenas se a
huponexit
opção estiver configurada: executeshopt huponexit
para verificar se isso é verdade.Se isso
huponexit
for verdade, você poderá usarnohup
oudisown
desassociar o processo do shell para que ele não seja morto quando você sair. Ou, execute as coisas comscreen
.Se
huponexit
for false, que é o padrão em pelo menos alguns linuxes atualmente, os trabalhos em segundo plano não serão eliminados no logout normal.Mas mesmo se
huponexit
é falsa, então se a conexão ssh se matou , ou gotas (diferentes do que o logout normal), processos, em seguida, backgrounded ainda vai ser morto. Isso pode ser evitado pordisown
ounohup
como em (2).Há alguma distinção entre (a) processos cujo processo pai é o terminal e (b) processos que possuem stdin, stdout ou stderr conectados ao terminal . Não sei o que acontece com processos que são (a) e não (b), ou vice-versa.
Pergunta final: Como posso evitar o comportamento (3)? Em outras palavras, por padrão, os processos em segundo plano do Debian são executados sozinhos após o logout, mas não após a conexão ssh. Gostaria que o mesmo acontecesse com os processos, independentemente de a conexão ser fechada normalmente ou interrompida. Ou isso é uma má ideia?
Edit: Outra maneira importante de impedir que os trabalhos sejam mortos, que funciona (?) Em ambos os casos, é executá-los na tela . Mas, a questão é mais sobre como entender quando as coisas são mortas e quando não: às vezes as pessoas querem que os trabalhos sejam mortos no logout, por exemplo.
Mais tópicos: - Esclarecimento sobre sinais (suspiro), trabalhos e terminal de controle - /server/117152/do-background-processes-get-a-sighup-when-logging-off - Continue SSH tarefa / trabalhos em segundo plano ao fechar o SSH - Um trabalho colocado em segundo plano continuará em execução após o encerramento de uma sessão SSH? - Impedir que um processo em segundo plano já em execução seja interrompido após o fechamento do cliente SSH - Como posso iniciar um processo pelo SSH para que ele continue em execução após eu desconectar? - Não é possível manter o trabalho remoto em execução no OS X - Fechar a conexão SSH