Esta grande aplicação está emitindo comandos externos através de um shell, usando popen
ou funções de biblioteca similares. Os shells intermediários permanecem como zumbis ("processos defuntos") porque o aplicativo não está chamando wait
para “ ceifar ”seus filhos. Note que os processos zumbis são totalmente inofensivos (não importa o que os filmes B possam levar você a acreditar); o único recurso que eles consomem é uma entrada na tabela de processos.
Você pode rastrear quais comandos o aplicativo executa executando
strace -f -s99999 -v -eexecve -o big-application.strace ./big-application
Isso pode desacelerar seu programa um pouco. Você pode ativar e desativar o rastreamento durante a vida útil de um processo: para iniciar o rastreamento, executar
strace -f -s99999 -v -eexecve -o big-application.strace -p 12345
em que 12345 é o ID do processo que você deseja rastrear. Mate o processo strace
(por exemplo, pressionando Ctrl + C ) para interromper o rastreamento.