Odpowiedzi:
Działa to bardzo dobrze:
while true; do uptime >> uptime.log; sleep 1; done
Pozwoli to rejestrować obciążenie procesora każdy drugi i dołączyć go do pliku uptime.log
.
Następnie możesz zaimportować ten plik do arkusza kalkulacyjnego Gnumeric lub OpenOffice, aby utworzyć ładny wykres (podczas importu wybierz „oddzielone spacjami”).
Jak zauważył Scaine, to nie wystarczy, aby zdiagnozować problem. Więc dodatkowo uruchom to (lub użyj jego odpowiedzi w tej części):
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
Spowoduje to dołączenie 10 najlepszych procesów wymagających największej mocy procesora do pliku ps.log
co pięć sekund.
Pamiętaj, że nie jest to pełny ładunek informacji dla łodzi top
. To tylko 10 najlepszych i tylko ich użycie procesora, użycie pamięci i pierwszy argument (tj. Ich polecenie bez dalszych argumentów, jak w /usr/bin/firefox
)
Po użyciu arkusza kalkulacyjnego do utworzenia wykresu pokazującego, kiedy obciążenie procesora przeszło przez dach, możesz następnie wyszukać ten plik w najbliższym czasie, aby zobaczyć, co spowodowało ten proces.
Tak będą wyglądać te pliki:
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
jest bezsensowne, spróbuj uruchomić go jako root.
Możesz uruchomić top
polecenie w trybie wsadowym, korzystając z -b
opcji, a następnie zrzucić je do pliku.
Po uruchomieniu komputera otwórz terminal, uruchom
top -b > ~/cpu.txt
Następnie, gdy komputer zawiesza się, po prostu otwórz (prawdopodobnie ogromny) plik tekstowy i sprawdź ostatni wpis, aby uzyskać szczegółowe informacje na temat tego, co działało tuż przed awarią. W rzeczywistości plik będzie tak głupio duży, że lepiej jest uruchomić tail -250 ~/cpu.txt
zamiast niego.
Sprawdź także /var/log/kern.log, jeśli Twój problem dotyczy sprzętu (mało prawdopodobne, jeśli dzieje się to dopiero po aktualizacji, ale mimo to warto sprawdzić).
Znalazłem wielką odpowiedź przez Christophera na to pytanie na Unix i Linux , który wykorzystuje top
:
top -n 1 -b > top.out
To da ci 1 iterację, top
a następnie zatrzymaj, a następnie przekaż go do pliku.