Ответы:
Это работает очень хорошо:
while true; do uptime >> uptime.log; sleep 1; done
Это будет регистрировать загрузку вашего процессора каждую секунду и добавлять его в файл uptime.log
.
Затем вы можете импортировать этот файл в Gnumeric или электронную таблицу OpenOffice, чтобы создать красивый график (выберите «разделенные пробелами» при импорте).
Как заметил Скайн, этого будет недостаточно для диагностики проблемы. Итак, дополнительно, запустите это (или используйте его ответ для этой части):
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
Это добавит ТОП-10 самых ресурсоемких процессов в файл ps.log
каждые пять секунд.
Обратите внимание, что это не полная информация о яхте top
. Это только топ-10, и только их загрузка ЦП, использование памяти и первый аргумент (т.е. их команда без дополнительных аргументов, как в /usr/bin/firefox
)
После того, как вы воспользовались электронной таблицей для создания графика, чтобы увидеть, когда нагрузка вашего ЦП прошла через крышу, вы можете искать этот файл в течение ближайшего времени, чтобы увидеть, какой процесс вызвал его.
Вот как будут выглядеть эти файлы:
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
имеет смысла, попробуйте запустить его как root.
Вы можете запустить top
команду в пакетном режиме, используя -b
опцию, а затем вывести ее в файл.
При запуске вашего ПК откройте терминал, запустите
top -b > ~/cpu.txt
Затем, когда ваш компьютер зависает, просто откройте (возможно, огромный) текстовый файл и проверьте последнюю запись на предмет некоторых деталей о том, что работало непосредственно перед сбоем. На самом деле файл будет настолько тупо большим, что tail -250 ~/cpu.txt
вместо него лучше запустить .
Также проверьте ваш /var/log/kern.log на случай, если ваша проблема связана с оборудованием (маловероятно, если это произойдет только после обновления, но, тем не менее, стоит проверить).
Я нашел большой ответ на Кристофера на этот вопрос на Unix и Linux , которая использует top
:
top -n 1 -b > top.out
Это даст вам 1 итерацию, top
затем остановку, а затем отправит ее в файл.