Se você executar um sistema operacional que suporte dtrace , esse script ajudará você a identificar quais processos estão iniciando processos de curta duração:
#!/usr/sbin/dtrace -qs
proc:::exec
{
self->parent=stringof((unsigned char*)curpsinfo->pr_psargs);
}
proc:::exec-success
/self->parent != NULL/
{
printf("%s -> %s\n",self->parent,curpsinfo->pr_psargs);
self->parent=NULL;
}
Se você estiver em um SO sem dtrace support, dê uma olhada nas alternativas, por exemplo, systemtap ou sysdig com Linux, ProbeView com AIX.
Aqui está um script de sysdig que mostrará todos os horários de lançamento e saída de comandos com seus pid e ppid :
sysdig -p"*%evt.time %proc.pid %proc.ppid %evt.dir %proc.exeline" \
"( evt.dir=< and evt.type=execve ) or evt.type=procexit"
Outro método seria habilitar a contabilidade de processo com seu SO (se disponível, geralmente o pacote acct no Linux) e dar uma olhada nos logs gerados. Existe também um programa semelhante ao top que alavanca a contabilidade do processo: no topo .