Como posso obter uma lista de processos de longa duração que correspondem a um padrão específico?

6

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?

    
por Rowland Shaw 20.07.2011 / 23:13

2 respostas

9

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

    
por 20.07.2011 / 23:32
3

Em vez disso, você pode executar monit , que já foi projetado para isso.

    
por 21.07.2011 / 05:12

Tags