Risposte:
Funziona molto bene:
while true; do uptime >> uptime.log; sleep 1; done
Ciò registrerà il caricamento della tua CPU ogni secondo e lo aggiungerà a un file uptime.log
.
Puoi quindi importare questo file in Gnumeric o nel foglio di calcolo di OpenOffice per creare un bel grafico (seleziona 'separato da spazi' durante l'importazione).
Come ha notato Scaine, questo non sarà sufficiente per diagnosticare il problema. Quindi, esegui anche questo (o usa la sua risposta per questa 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
Questo aggiungerà i primi 10 processi più affamati di CPU a un file ps.log
ogni cinque secondi.
Nota che questo non è il carico completo di informazioni top
che ti darebbe. Questo è solo il top 10, e solo il loro utilizzo della CPU, l'utilizzo della memoria e il primo argomento (cioè il loro comando senza ulteriori argomenti, come in /usr/bin/firefox
)
Dopo aver utilizzato un foglio di calcolo per creare un grafico per vedere quando il carico della CPU ha attraversato il tetto, è quindi possibile cercare questo file per il tempo più vicino per vedere quale processo lo ha causato.
Ecco come appariranno quei file:
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
senso, prova a eseguirlo come root.
È possibile eseguire il top
comando in modalità batch utilizzando l' -b
opzione, quindi scaricarlo su un file.
All'avvio del PC, apri un terminale, esegui
top -b > ~/cpu.txt
Quindi quando il tuo PC si blocca, apri semplicemente il (probabilmente enorme) file di testo e controlla l'ultima voce per alcuni dettagli su ciò che era in esecuzione appena prima dell'incidente. Nel fatto che il file sarà così stupidamente grande che è meglio eseguire tail -250 ~/cpu.txt
invece un .
Controlla anche il tuo /var/log/kern.log nel caso in cui il tuo problema sia legato all'hardware (è improbabile che ciò avvenga solo dopo un aggiornamento, ma vale comunque la pena di controllarlo).
Ho trovato un'ottima risposta di Christopher a questa domanda su Unix e Linux che utilizza top
:
top -n 1 -b > top.out
Questo ti darà 1 iterazione di top
poi stop, e poi lo sposterà in un file.