Quando você fecha um shell, ele envia um sinal SIGHUP para todos os trabalhos gerados. Por padrão, o SIGHUP encerrará qualquer processo.
Se você souber que precisa "mantê-lo em execução" ao gerar o processo, poderá usar nohup
para gerar seu processo. Como efeito colateral, ele redirecionará stdout e stderr para um arquivo nohup.out se esses fluxos estivessem apontando para o terminal. Você pode redirecioná-los você mesmo se não quiser este arquivo.
Você também pode executá-lo usando setsid
, o que cria um novo grupo de processos. Seu shell não enviará mais SIGHUP para ele, pois não está no grupo de processos do shell.
Se você já iniciou seu programa e está executando o bash ou zsh (muito provavelmente no Linux), você pode usar disown
.
Execute o comando com &
para forçar o plano de fundo ou execute-o normalmente digite Ctrl-Z para suspendê-lo e bg %1
(assumindo que é o trabalho nº 1) para suspendê-lo e executá-lo como plano de fundo processo. Então você digita disown %1
para fazer o bash / zsh esquecer isso.
disown
é o meu método usual, não preciso me lembrar de mexer com fluxos de saída como nohup
requer.