Se o subprocesso for iniciado com nohup, ele permanecerá ativo depois que o shell pai sair / morrer, ou seja, depois de toda a finalidade do comando nohup.
Outra possibilidade é se o script ou processo manejar o (s) sinal (is) de kill (obviamente não matar -9) e o ignorar, então se você iniciá-lo como uma tarefa em background ele não morrerá quando o shell atual sair. / p>
exemplo:
#!/bin/bash
function trap_handler
{
echo "SORRY! I am not going down MUAHAHA!"
}
trap trap_handler SIGINT SIGTERM SIGHUP
while true
do
sleep 60
done
Então, se eu começar isso como uma tarefa em segundo plano e tentar matá-lo, é o que acontece:
$ ps -ef | grep test &
$ jobs
[1]+ Running ./test_trap.sh &
$ kill %1
$ Terminated
SORRY! I am not going down MUAHAH!
$ jobs
[1]+ Running ./test_trap.sh &
Ok, agora vamos monitorar o processo a partir de um terminal diferente e observar o que acontece quando eu saio do terminal / shell em que o script foi iniciado:
$ pstree -clap 26163
bash,26163
└─test_trap.sh,26175 ./test_trap.sh
└─sleep,26183 60
## exited the original terminal window with exit
$ pstree -clap 26163
$
$ pstree -clap 26175
test_trap.sh,26175 ./test_trap.sh
└─sleep,26185 60
O processo do terminal não existe mais, mas quando eu faço um pstree no ID do processo para o test_trap.sh que foi iniciado, ele e seus subprocessos ainda estão lá.