Processos PPID alterados para 1 após o fechamento do shell pai

1

Abrindo um novo terminal e digitando o comando firefox& inside, ps -l dá:

4 R  1000 23132 23104 99  80   0 - 2177945 -    pts/27   00:00:07 firefox

Se o shell for fechado com o comando exit , o processo filho do firefox permanece aberto!

Sempre foi o caso? O firefox não deveria estar fechando também? Há algo novo em um kernel recente ou algo que eu estou perdendo?

O resultado de ps -el|grep firefox é então:

4 S  1000 23132     1 14  80   0 - 2233312 poll_s ?      00:00:21 firefox

O PPID foi alterado para 1.

O que é responsável por esta mudança de PPID para 1?

EDIT: Oh, eu acabei de perceber que fechar o terminal e fechar o shell tem resultados muito diferentes: fechar o terminal fecha todos os processos filhos, mas não quando o shell é fechado com o comando de saída ... Não faço ideia porque. (Terminal de fechamento está enviando SIGTERM para todos os processos filhos? Mas o fechamento do shell está deixando órfãos?)

    
por bob dylan 18.10.2018 / 06:27

1 resposta

1

Is there something new in a recent kernel or something I'm missing?

Não, se um processo sair, seus filhos continuarem sendo executados, o processo pai será alterado para init (PID 1). Ou algum outro processo dependente do sistema, procure, e. "subagiradores" no Linux.

Esse sempre foi o caso, o que permite que nohup funcione de maneira útil, bem como o processo antigo de transformar um processo em um daemon, bifurcando duas vezes, chamando setsid() e saindo dos processos pai.

Fechar uma sessão de terminal pode enviar SIGHUP para os processos restantes, mas eles estão livres para ignorá-la (e é isso que o nohup faz). Além disso, systemd pode ser configurado para matar quaisquer processos remanescentes quando uma sessão de login de terminal termina, mas você provavelmente está executando firefox dentro de X de um emulador de terminal, de modo que isso não se aplica.

    
por 18.10.2018 / 06:54