Quando um líder de sessão com terminal de controle associado ( bash
, no seu caso) sai, o sistema operacional envia SIGHUP para todos os processos no grupo de processos de primeiro plano (trabalho de primeiro plano). Além disso, bash
envia, por padrão, o SIGHUP para todos os seus trabalhos, em execução ou parado (os trabalhos interrompidos também são enviados SIGCONT). Agora, a ação padrão ao receber SIGHUP é o término do processo.
Existem várias abordagens para deixar o processo em execução após bash
sair. Primeiro, você pode tornar seu processo imune ao SIGHUP; isto é o que o comando nohup
faz. Segundo, você pode colocar em segundo plano o grupo de processos correspondente e instruir bash
a não enviar SIGHUP para ele; é para isso que o disown
shell builtin é usado (note também que existe uma opção huponexit
shell, que faz com que SIGHUP seja enviado para todos os jobs quando um shell de login interativo sai).
Se você deseja reconectar um terminal ao grupo de processos depois de fazer o login novamente, você pode querer usar um wrapper capaz disso; multiplexadores de terminal como screen
têm essa funcionalidade.