Identifica ancestral / descendente envolvendo processos daemonizados

2

Existe uma maneira de identificar processos ancestrais / descendentes que sejam robustos, pois funcionam por meio da daemonização? Considere este exemplo:

  • PID 123 forks em PID 124
  • PID 124 chama setsid
  • PID 124 forks no PID 125
  • PID 124 sai
  • O PID 123 aguarda no PID 124

Como posso agora estabelecer que o PID 125 é um descendente do PID 123? Obviamente, o PID pai não funcionará (o pai será 1 devido a saída do PID 124), e nem o SID (será 124, que morreu e foi colhido, portanto não há informações disponíveis sobre ele).

    
por Joseph Sible 27.09.2018 / 01:38

1 resposta

0

Não há como fazer isso usando apenas os campos de ID numéricos. No Linux isso pode ser resolvido usando grupos de controle (cgroups) porque eles são hierárquicos e um processo não pode escapar do cgroup.

É por isso que os sistemas init tradicionais não tinham uma maneira confiável de determinar quais processos foram iniciados por um serviço específico e, portanto, nenhuma maneira confiável de eliminá-los, ao contrário do systemd, que depende dos cgroups para acompanhar a árvore de processos.

    
por 27.09.2018 / 01:48

Tags