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 .