Quando você efetua logout do seu shell, qualquer elemento ainda em execução recebe um sinal SIGHUP. Para que seu processo continue a ser executado após o logout, ele precisa capturar, ignorar ou evitar esse sinal, já que o comportamento padrão é sair.
O comando nohup
irá ignorar o sinal e é uma maneira comum de fazê-lo se o processo não enviar nada importante para stdout
.
O comando screen
(que é minha preferência) cria um shell dentro de um shell que pode ser desanexado e reconectado, evitando assim que o sinal seja gerado (ou melhor, ele é removido do pai nunca recebe o sinal).
Se o processo for escrito por você, você pode codificá-lo para capturar o sinal e, em seguida, realizar qualquer ação, inclusive ignorá-lo, para que ele continue a ser executado após o logout. Seu processo também pode se desassociar completamente de seu processo pai (consulte setsid()
) para que, como em screen
, ele não receba o SIGHUP durante o logout.
Qual método você escolhe e é mais adequado à sua situação e uso.