Як казали інші, найкращий спосіб - це, мабуть top. Потрібно трохи переробити і трохи проаналізувати, але ви можете отримати це, щоб ви отримали поточне використання процесора у відсотках.
topрозділяє використання процесора між користувачем, системними процесами та niceпроцесами, ми хочемо суму трьох. Отже, ми можемо працювати topв bрежимі атчаса, що дозволяє нам проаналізувати його вихід. Однак, як пояснено тут , 1-а ітерація top -bповертає відсотки після завантаження, тому нам потрібно принаймні дві ітерації ( -n 2), щоб отримати поточний відсоток. Щоб прискорити роботу, ви можете встановити dпроміжок між ітераціями на 0.01. Нарешті, ви grepвказуєте рядок, що містить відсотки процесора, а потім використовуєте gawkдля підсумовування користувачів, системних та приємних процесів:
top -bn 2 -d 0.01 | grep '^%Cpu' | tail -n 1 | gawk '{print $2+$4+$6}'
----- ------ ----------- --------- ----------------------
| | | | |------> add the values
| | | |--> keep only the 2nd iteration
| | |----------------> keep only the CPU use lines
| |----------------------------> set the delay between runs
|-----------------------------------> run twice in batch mode
Я думав, що ви також можете отримати цю інформацію ps -o pcpu ax, додавши% використання кожного запущеного процесу. На жаль, як пояснено тут , ps"повертається відсоток витраченого часу на весь процес процесу", який не є необхідним.
EDIT
Виходячи з вашого коментаря, ваша версія topвідрізняється від моєї, і ви повинні використовувати її замість цього:
top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'
І, щоб уникнути проблем з локалізацією, встановіть мову на C:
LC_ALL=C top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'