Como descobrir quais processos estavam sendo executados no passado?

4

Me pedem para investigar um alerta alto de uso da CPU que ocorreu esta manhã. Eu usei sar -p e vi o alto uso da CPU aparecendo naquele momento

Em seguida, usei ps -eo pcpu,pid,user,args | sort -r -k1 | less para listar os 10 principais porcos de memória a essa hora

Agora, como descubro quais processos causaram o gargalo naquele horário específico pela manhã. Eu sou um desenvolvedor java e não um especialista em Linux.

É possível?

    
por Shiva 28.01.2016 / 20:43

1 resposta

6

Existem várias opções:

  1. use um script que grava os dados necessários regularmente em um arquivo de log. Você poderia usar o cron para gravar a saída de ps (e outros comandos) a cada x minutos em um arquivo de log.
  2. Melhor seria usar um programa especializado, que faz isso por você. no topo é muito bom nisso, ele cuida da retenção do arquivo de log.
O

onop está disponível através do repo EPEL para o CentOS / RHEL / Fedora e através das reposições padrão do Debian / Ubuntu.

Você pode usar o topo como um utilitário superior em tempo real normal, com um comportamento ligeiramente diferente (confira a manpage para as teclas digitadas).

A parte mais interessante é: Uma vez instalado, um daemon inicia o registro de dados em / var / log / atop e você pode ler esses arquivos novamente no topo:

atop -r /var/log/atop/atop_20160128

Você tem acesso a todas as funções 'top' (classificação / observação da memória / uso de CPU / IO, etc.) e pode avançar 10 minutos no tempo através de 't' e 10 minutos com 'T' ou pular em um horário específico via 'b'.

Dê uma olhada no topo da página manpage e o google tem muitos howtos sobre isso.

Pode haver outras soluções, mas no topo é fácil de entender e usar e um bom começo antes de fazer algumas configurações mais personalizadas.

    
por 28.01.2016 / 21:15