Isso não responderá à sua pergunta em particular, mas trará algumas informações gerais sobre o comportamento do sistema relevantes para o seu problema e poderá ajudar a entender como controlar melhor o que está acontecendo.
Em sistemas UNIX e UNIX, processos iniciados dentro de um shell serão processos filhos desse shell. Se um shell fecha (por exemplo, desconectando) ou morre, seus processos filhos receberão um sinal de desconfiguração (SIGHUP) e os processos filhos serão herdados por init
, o primeiro processo, e assim terão os processos pai daemonizados como pid 1 .
A criança pode implementar um manipulador e pode ser decidido de forma programática qual ação tomar. Normalmente, a criança vai desistir de desligar a casca das cascas.
Para evitar isso ou tomar uma ação diferente, você pode usar um manipulador de sinal (consulte armadilha no bash):
#!/bin/bash
trap '' HUP
# some long running action here
Isto irá ignorar o sinal HUP. Você pode adicionar algumas operações assim:
#!/bin/bash
on_hangup() {
echo "Cought SIGHUP"
# more commands/action
# like redirection stdout to preserve output
# or exit
}
trap 'on_hangup' HUP
# long running stuff here