Как определить текущее использование процессора из оболочки в Linux?
Например, я получаю среднюю нагрузку следующим образом:
cat /proc/loadavg
Выходы:
0.18 0.48 0.46 4/234 30719
Как определить текущее использование процессора из оболочки в Linux?
Например, я получаю среднюю нагрузку следующим образом:
cat /proc/loadavg
Выходы:
0.18 0.48 0.46 4/234 30719
В Linux нет системных переменных, которые дают текущую загрузку процессора. Вместо этого вам придется читать /proc/stat
несколько раз: каждый столбец в строках cpu(n)
дает общее время ЦП, и вы должны брать последующие показания, чтобы получить проценты. Посмотрите этот документ, чтобы узнать, что означают различные столбцы.
Вы можете использовать top или ps для проверки использования ЦП.
используя верхнюю часть: это покажет вам статистику процессора
top -b -n 1 |grep ^Cpu
используя ps: Это покажет вам использование% cpu для каждого процесса.
ps -eo pcpu,pid,user,args | sort -r -k1 | less
Кроме того, вы можете написать небольшой script в bash или perl для чтения /proc/stat и вычислить использование ЦП.
Попробуйте выполнить следующую команду:
$ top
http://www.cyberciti.biz/tips/how-do-i-find-out-linux-cpu-utilization.html
Команда uptime
дает средние значения загрузки за последние 1, 5 и 15 минут.
Попробуйте эту команду:
cat /proc/stat
Это будет что-то вроде этого:
cpu 55366 271 17283 75381807 22953 13468 94542 0
cpu0 3374 0 2187 9462432 1393 2 665 0
cpu1 2074 12 1314 9459589 841 2 43 0
cpu2 1664 0 1109 9447191 666 1 571 0
cpu3 864 0 716 9429250 387 2 118 0
cpu4 27667 110 5553 9358851 13900 2598 21784 0
cpu5 16625 146 2861 9388654 4556 4026 24979 0
cpu6 1790 0 1836 9436782 480 3307 19623 0
cpu7 1306 0 1702 9399053 726 3529 26756 0
intr 4421041070 559 10 0 4 5 0 0 0 26 0 0 0 111 0 129692 0 0 0 0 0 95 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 369 91027 1580921706 1277926101 570026630 991666971 0 277768 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 8097121
btime 1251365089
processes 63692
procs_running 2
procs_blocked 0
Больше деталей:
http://www.mail-archive.com/[email protected]/msg01690.html http://www.linuxhowtos.org/System/procstat.htm
Может быть, что-то вроде этого
ps -eo pid,pcpu,comm
И если вам нравится разбираться и, возможно, смотреть только на некоторые процессы.
#!/bin/sh
ps -eo pid,pcpu,comm | awk '{if ($2 > 4) print }' >> ~/ps_eo_test.txt
Вам нужно пробовать среднее значение нагрузки в течение нескольких секунд и вычислять использование ЦП. Если вы не знаете, что вам нужно, получите источники "сверху" и прочитайте его.