Ao fazer isso após uma discussão prolongada com um colega de trabalho, eu realmente gostaria de um esclarecimento aqui.
Inicio um processo em segundo plano, anexando " &
" à linha de comando ou parando CTRL-Z
e reiniciando em segundo plano com " bg
". Então eu saio.
O que acontece?
Tínhamos certeza de que deveria ter sido morto por um SIGHUP, mas isso não aconteceu; ao fazer login novamente, o processo estava em execução feliz e pstree
mostrou que foi "adotado" por init
.
Este é o comportamento esperado?
Mas então, se for, qual é o nohup
propósito do comando? Parece que o processo não será morto de qualquer maneira, com ou sem ...
Editar 1
Mais alguns detalhes:
- O comando foi iniciado a partir de uma sessão SSH, não a partir do console físico.
- O comando foi lançado sem
nohup
e / ou&
; foi então suspensoCTRL-Z
e retomado em segundo plano combg
. - A sessão ssh não caiu. Houve um logout real ("
exit
" comando). - O processo foi uma
scp
operação de cópia de arquivo. - Ao fazer login novamente,
pstree
mostrou o processo em execução e sendo filho deinit
.
Editar 2
Para declarar a questão com mais clareza: colocar um processo em segundo plano (usando &
ou bg
) fará com que seja ignorado SIGHUP
, assim como o nohup
comando?
Editar 3
Tentei enviar manualmente um SIGHUP
para scp
: ele saiu, por isso definitivamente não ignora o sinal.
Depois, tentei novamente iniciá-lo, colocando-o em segundo plano e efetuando logoff: ele foi "adotado" init
e continuou sendo executado, e eu o encontrei lá ao fazer logon novamente.
Estou bastante confuso agora. Parece que não SIGHUP
foi enviado para o logoff.
1>/dev/null 2>&1
por exemplo, para o bash etc.?