อย่างที่คนอื่นพูดกันอาจเป็นวิธีที่ดีที่สุด top
. ต้องการการปรับแต่งเล็กน้อยและการแยกวิเคราะห์เล็กน้อย แต่คุณสามารถรับเพื่อให้การใช้งาน CPU ปัจจุบันเป็นเปอร์เซ็นต์
top
แยกการใช้ CPU ระหว่างผู้ใช้กระบวนการของระบบและ nice
กระบวนการเราต้องการผลรวมของทั้งสาม ดังนั้นเราสามารถวิ่งได้ top
ใน b
โหมด atch ซึ่งช่วยให้เราสามารถแยกเอาท์พุทของมัน อย่างไรก็ตามตามที่อธิบายไว้ ที่นี่ การทำซ้ำครั้งที่ 1 ของ top -b
ส่งกลับค่าเปอร์เซ็นต์ตั้งแต่บูตเราจึงต้องมีการวนซ้ำอย่างน้อยสองครั้ง ( -n 2
) เพื่อรับเปอร์เซ็นต์ปัจจุบัน เพื่อให้เร็วขึ้นคุณสามารถตั้งค่า d
หน่วงเวลาระหว่างการทำซ้ำถึง 0.01
. ในที่สุดคุณ grep
บรรทัดที่มีเปอร์เซ็นต์ CPU และจากนั้นใช้ 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
"ส่งคืนเปอร์เซ็นต์ของเวลาที่ใช้ในการทำงานตลอดอายุการใช้งานของกระบวนการ" ซึ่งไม่ใช่สิ่งที่คุณต้องการ
แก้ไข
ตามความคิดเห็นของคุณเวอร์ชันของคุณ 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}'