Eu fiz algo assim no passado.
ps -A -o etime,pid,user,args| grep init
retorna
180-04:55:20 1 root init [5]
Que é facilmente analisável em perl. Eu usei split e pop para analisá-lo.
O formato é [[dd-] hh:] mm: ss
Eu sei que posso fazer ps aux | grep cgi
para obter uma lista de todos os scripts cgi atualmente em execução, e ps -p [pid] -o etime=
pode obter o tempo de execução para cada pid; existe uma maneira de combinar os dois, ou melhor ainda, apenas retornar aqueles que estão em execução há "muito tempo" (por exemplo, 45seg)?
O ideal é que eu esteja procurando algo que possa ser colocado em um script em perl que procure por problemas, envie-me um e-mail com detalhes e pro-ativamente elimine o processo "por segurança". seria melhor apenas amarrar a saída de um e depois percorrer os resultados?
Em vez disso, você pode executar monit , que já foi projetado para isso.