Вы можете использовать утилиту vmstat(8)
. Это часто не устанавливается в системах Linux по умолчанию, поэтому, если он отсутствует в вашей системе, вам нужно установить его с помощью системного менеджера пакетов.
В Fedora Core это часть пакета sysstat
.
Пример вывода:
$ vmstat 1 2
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 752 136480 31204 392176 0 0 2 1 40 101 0 0 99 0
0 0 752 138268 31344 392416 0 0 0 0 59 205 0 1 99 0
Первая строка - это среднее значение после перезагрузки, вторая строка - это выборка последней секунды.
Вы хотите, чтобы статистика процессора, очевидно, значение столбцов (с man-страницы):
CPU
These are percentages of total CPU time.
us: Time spent running non-kernel code. (user time, including nice time)
sy: Time spent running kernel code. (system time)
id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.
wa: Time spent waiting for IO. Prior to Linux 2.5.41, included in idle.
st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.
Вы можете использовать awk(1)
для получения значений, например:
vmstat=$(vmstat 1 2 | tail -1)
# Kernel time
sys=$(echo "$vmstat" | awk '{print $14}')
# User time
sys=$(echo "$vmstat" | awk '{print $13}')
Смежный вопрос: Как получить общее использование процессора (например, 57%) в Linux [закрыто]
Это должно работать на Linux, FreeBSD и, возможно, MacOSX.