Respostas:
Isso funciona muito bem:
while true; do uptime >> uptime.log; sleep 1; done
Isso registrará o carregamento da CPU a cada segundo e o anexará a um arquivo uptime.log
.
Em seguida, você pode importar esse arquivo para a planilha do Gnumeric ou do OpenOffice para criar um bom gráfico (selecione 'separado por espaços' na importação).
Como Scaine notou, isso não será suficiente para diagnosticar o problema. Além disso, execute isso (ou use a resposta dele para esta parte):
while true; do (echo "%CPU %MEM ARGS $(date)" && ps -e -o pcpu,pmem,args --sort=pcpu | cut -d" " -f1-5 | tail) >> ps.log; sleep 5; done
Isso anexará os 10 principais processos que exigem mais CPU a um arquivo a ps.log
cada cinco segundos.
Observe que essa não é a carga completa de informações top
que você forneceria. Este é apenas o top 10, e apenas o uso de CPU, uso de memória e o primeiro argumento (ou seja, o comando sem argumentos adicionais, como em /usr/bin/firefox
)
Depois de usar uma planilha para criar um gráfico para ver quando a carga da CPU passou pelo teto, você poderá pesquisar nesse arquivo pelo tempo mais próximo para ver qual processo o causou.
É assim que esses arquivos serão:
uptime.log
~$ cat uptime.log
22:57:42 up 1 day, 4:38, 4 users, load average: 1.00, 1.26, 1.21
22:57:43 up 1 day, 4:38, 4 users, load average: 0.92, 1.24, 1.21
22:57:44 up 1 day, 4:38, 4 users, load average: 0.92, 1.24, 1.21
22:57:45 up 1 day, 4:38, 4 users, load average: 0.92, 1.24, 1.21
...
ps.log
%CPU %MEM ARGS Mo 17. Jan 23:09:47 CET 2011
0.7 0.9 /usr/bin/compiz
0.8 0.5 /usr/lib/gnome-panel/clock-applet
1.1 1.7 /opt/google/chrome/chrome
1.2 0.3 /usr/bin/pulseaudio
1.8 4.0 /opt/google/chrome/chrome
2.6 1.5 /opt/google/chrome/chrome
2.6 3.2 /usr/bin/google-chrome
3.6 2.6 /opt/google/chrome/chrome
4.9 1.5 /usr/bin/X
5.7 1.6 /opt/google/chrome/chrome
%CPU %MEM ARGS Mo 17. Jan 23:09:48 CET 2011
0.7 0.9 /usr/bin/compiz
0.8 0.5 /usr/lib/gnome-panel/clock-applet
1.0 1.7 /opt/google/chrome/chrome
1.2 0.3 /usr/bin/pulseaudio
1.8 4.0 /opt/google/chrome/chrome
2.6 1.5 /opt/google/chrome/chrome
2.6 3.2 /usr/bin/google-chrome
3.6 2.6 /opt/google/chrome/chrome
4.9 1.5 /usr/bin/X
5.7 1.6 /opt/google/chrome/chrome
...
ps
for absurdo, tente executá-lo como root.
Você pode executar o top
comando no modo em lote usando a -b
opção e despejá-lo em um arquivo.
Na inicialização do seu PC, abra um terminal, execute
top -b > ~/cpu.txt
Então, quando o seu PC congelar, basta abrir o arquivo de texto (provavelmente enorme) e verificar a última entrada para obter alguns detalhes sobre o que estava sendo executado pouco antes da falha. No fato de o arquivo ser tão estupidamente grande que é melhor você rodar um tail -250 ~/cpu.txt
.
Verifique também o seu /var/log/kern.log caso o seu problema esteja relacionado ao hardware (improvável que isso só ocorra após uma atualização, mas que vale a pena conferir).
Encontrei uma ótima resposta de Christopher para esta pergunta no Unix e Linux que usa top
:
top -n 1 -b > top.out
Isso fornecerá uma iteração top
e, em seguida, pare e envie-o para um arquivo.