Я считаю, что вы должны иметь возможность извлекать информацию из / proc / stat - строки, начинающиеся с cpu $ N, где $ N - 0, 1, 2, ...... Например:
Настоятельно рекомендуем прочитать статьи, на которые есть ссылки в другом ответе.
cpu0 101840 1 92875 80508446 4038 0 4562 0 0 0
cpu1 81264 0 68829 80842548 4424 0 2902 0 0 0
При повторном вызове будут показаны большие значения:
cpu 183357 1 162020 161382289 8463 0 7470 0 0 0
cpu0 102003 1 93061 80523961 4038 0 4565 0 0 0
cpu1 81354 0 68958 80858328 4424 0 2905 0 0 0
Обратите внимание, что CPU0 5-й столбец (число пустых) перемещается с 80508446 на 80523961
Формат каждой строки в
cpuN время пользовательского времени системное время простоя io-wait ireq softirq steal guest guest_nice
Итак, основное решение:
while true ;
for each cpu
read current counters, at least user-time system-time and idle
usage = current(user-time + system-time) - prev(user-time+system-time)
idle = current(idle) - prev(idle)
utilization = usage/(usage+idle)
// print or whatever.
set prev=current
done