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

Ответы:

42

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

 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
 ...
Стефано Палаццо
источник
3
Это действительно печатает правильное использование процессора ?? Я попробовал это на Centos, и только использование памяти было правильным :(
Менелайос Бакопулос
Как я могу заставить эту команду работать на моем VPS даже после закрытия соединения Putty?
Лукас Бустаманте
1
Если использование ЦП, о котором сообщается, не psимеет смысла, попробуйте запустить его как root.
Стефано Палаццо
Как я могу заставить эту команду продолжать работать на моем VPS даже после того, как я закрыл соединение Putty ????
Мостафа
10

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

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

top -b > ~/cpu.txt

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

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

Scaine
источник
0

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

Мостафа
источник