Как зарегистрировать загрузку процессора?

Как записать загрузку процессора в файл, чтобы изучить проблему?

30
задан 24 July 2012 в 09:21

4 ответа

Это работает очень хорошо:

 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
 ...
0
ответ дан 24 July 2012 в 09:21

Вы можете запустить команду top в пакетном режиме, используя опцию -b, а затем сбросить ее в файл.

При запуске вашего ПК откройте терминал, запустите

top -b > ~/cpu.txt

Затем, когда ваш компьютер зависнет, просто откройте (возможно, огромный) текстовый файл и проверьте последнюю запись для некоторых подробностей о том, что работало незадолго до аварии. На самом деле файл будет настолько тупо большим, что лучше вместо него запустить tail -250 ~/cpu.txt.

Также проверьте ваш /var/log/kern.log, если ваша проблема связана с аппаратным обеспечением (маловероятно, если это происходит только после обновления, но, тем не менее, стоит проверить).

0
ответ дан 24 July 2012 в 09:21

Я нашел большой ответ Christopher к этот вопрос на Unix и Linux, который использует top :

top -n 1 -b > top.out

Это даст Вам 1 повторение top затем остановка и затем продвинет его в файл.

1
ответ дан 16 November 2019 в 11:23

Для тех, кто должен выполнить эту команду после Вашей шпаклевки (клиент SSH) конец сессии. можно использовать команду screen (или установите его использование apt-get )

0
ответ дан 23 November 2019 в 00:47

Другие вопросы по тегам:

Похожие вопросы: