Відповіді:
Це дуже добре працює:
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
а потім зупиніть, а потім натисніть її на файл.