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.
topkullanıcı, sistem işlemleri ve nicesüreçler arasında CPU kullanımını böler , üçünün toplamını istiyoruz. Demek ki çalıştırabilirsiniz topiçinde bbize çı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 2mevcut yüzdeyi elde etmek için en az iki yinelemeye ( ) ihtiyacımız var . Bir şeyleri hızlandırmak için, diterasyonlar arasındaki gecikmeyi ayarlayabilirsiniz 0.01. Son olarak, grepCPU yüzdelerini içeren satır ve daha sonra gawkkullanı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 axHer ç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
topYorumunuza 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}'