Diğerlerinin söylediği gibi, en iyi yol muhtemelen top
. Biraz tweaking ve biraz ayrıştırma gerekiyor, ancak mevcut CPU kullanımını yüzde olarak vermek için alabilirsiniz.
top
kullanıcı, sistem işlemleri ve nice
süreçler arasında CPU kullanımını böler , üçünün toplamını istiyoruz. Demek ki çalıştırabilirsiniz top
içinde b
bize çıkışını ayrıştırmak olanak atch mod. Bununla birlikte, burada açıklandığı gibi , top -b
önyüklemeden bu yana yüzdelerin 1. yinelemesi , bu nedenle -n 2
mevcut yüzdeyi elde etmek için en az iki yinelemeye ( ) ihtiyacımız var . Bir şeyleri hızlandırmak için, d
iterasyonlar arasındaki gecikmeyi ayarlayabilirsiniz 0.01
. Son olarak, grep
CPU yüzdelerini içeren satır ve daha sonra gawk
kullanıcı, sistem ve güzel süreçleri toplamak için kullanın :
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
Her çalışan işlemin% kullanımını ekleyerek de bu bilgiyi alabileceğinizi düşündüm . Ne yazık ki, burada açıklandığı gibi , ps
"bir sürecin tüm ömrü boyunca çalıştırmak için harcanan sürenin yüzdesini döndürür", bu da ihtiyacınız olan şey değildir.
DÜZENLE
top
Yorumunuza dayanarak, sürümünüz benimkinden farklı ve bunun yerine bunu kullanmalısınız:
top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'
Yerelleştirmeyle ilgili sorunları önlemek için yerel ayarı C olarak ayarlayın:
LC_ALL=C top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'