O Bash parece enviar o SIGHUP
somente se ele mesmo recebeu um SIGHUP
, que por exemplo ocorre quando um terminal virtual é fechado ou quando a conexão SSH é interrompida. Na documentação :
The shell exits by default upon receipt of a SIGHUP. Before exiting, an interactive shell resends the SIGHUP to all jobs, running or stopped. Stopped jobs are sent SIGCONT to ensure that they receive the SIGHUP. To prevent the shell from sending the SIGHUP signal to a particular job, it should be removed from the jobs table with the disown builtin (see Job Control Builtins) or marked to not receive SIGHUP using disown -h.
Portanto, se você digitar exit
ou pressionar Ctrl + D , todo o processo em segundo plano permanecerá, pois isso não envia um sinal de interrupção para o Bash.
Você pode forçar o Bash a avisá-lo sobre o fato de que ainda há processos em segundo plano com
shopt -s checkjobs
Existe uma opção para enviar o SIGHUP
ao sair se você estiver em um shell interativo ( veja aqui ). Mas isso não funciona na minha máquina com o Bash 4.2.25.
Talvez isso funcione para você
shopt -s huponexit