วิธีแสดงกระบวนการสิ้นเปลือง CPU ห้าอันดับแรกด้วย ps
วิธีแสดงกระบวนการสิ้นเปลือง CPU ห้าอันดับแรกด้วย ps
คำตอบ:
ทำไมต้องใช้ps
เมื่อคุณสามารถทำได้อย่างง่ายดายด้วยtop
คำสั่ง?
หากคุณต้องใช้ps
ลองสิ่งนี้:
ps aux | sort -nrk 3,3 | head -n 5
หากคุณต้องการบางสิ่งที่ 'ยอด' อย่างแท้จริงด้วยการอัพเดทอย่างต่อเนื่องให้ใช้การเฝ้าดู
watch "ps aux | sort -nrk 3,3 | head -n 5"
ps aux | sort -nrk 3,3 | head -n 5
top
ใช้งานจริง
top
อ่านรายการกระบวนการและแสดงผลลัพธ์ด้วยตัวเองโดยไม่ต้องไปป์
คำตอบที่ถูกต้องคือ :
ps --sort=-pcpu | head -n 6
ดังนั้นคุณสามารถระบุคอลัมน์โดยไม่รบกวนการเรียงลำดับ
Ex:
ps -Ao user,uid,comm,pid,pcpu,tty --sort=-pcpu | head -n 6
หมายเหตุสำหรับ MAC OS X : ใน Mac OS X ps
ไม่รู้จัก--sort
แต่มีข้อเสนอ-r
ให้เรียงตามการใช้งาน CPU ปัจจุบัน ดังนั้นสำหรับ Mac OS X คุณสามารถใช้:
ps -Ao user,uid,comm,pid,pcpu,tty -r | head -n 6
bash
(x2 หรือhead
เช่นกัน) ps
...
sort
ส่วนที่สองแสดงวิธีระบุคอลัมน์โดยไม่รบกวนการเรียงลำดับ เมื่ออธิบายบางสิ่งบางอย่าง .. จะดีกว่าเสมอที่จะรัดกุมและอธิบายสิ่งหนึ่งครั้ง
ขึ้นอยู่กับความต้องการของคุณคุณอาจพบว่าสามารถอ่านได้มากกว่านี้เล็กน้อย:
ps -eo pcpu,pid,user,args --no-headers| sort -t. -nk1,2 -k4,4 -r |head -n 5
ตัวอย่างผลลัพธ์:
1.3 4 root [ksoftirqd/0]
1.1 9 root [ksoftirqd/1]
1.0 17606 nobody /usr/sbin/gmetad
1.0 13 root [ksoftirqd/2]
0.3 17401 nobody /usr/sbin/gmond
(ฟิลด์คือ% CPU, PID, USER, COMMAND)
ฉันไม่คิดว่าps
เป็นสิ่งที่คุณกำลังมองหา คุณดูผลลัพธ์จากtop
หรือยัง
หากคุณมี GNU-Top ลองใช้โหมดแบทช์เพื่อแยกรายการกระบวนการที่เรียงตามการใช้ cpu และใช้ head / tail เพื่อให้ได้ 5 บรรทัดแรก (8 อันดับแรกคือส่วนหัว):
top -b -n 1 | head -n 12 | tail -n 5
BSD ด้านบนดูเหมือนว่าจะทำงานแตกต่างกันและไม่มีโหมดที่ไม่โต้ตอบดังนั้นให้ใช้หนึ่งในps
โซลูชั่นที่ใช้อื่น ๆ
top -o cpu -n 5
วิธีการบรรลุสิ่งเดียวกัน มีใครรู้บ้าง ฉันจะแตกต่างกับของคุณtop
top
-o
และ-n
ตั้งค่าจำนวนครั้งที่รีเฟรชหน้าจอก่อนที่จะออก
top
ดูเหมือนจะไม่ได้มีโหมดแบทช์ซึ่งค่อนข้าง จำกัด ต้องมีวิธีการไพพ์top
ลงในคำสั่งอื่น ฉันจะทำวิจัย
top
ทำงานตามที่อธิบายไว้เมื่อบ่ายนี้ ไชโย
ซับที่เร็วที่สุดที่ฉันพบสำหรับสิ่งนี้ (หมายเหตุ 6 เพราะส่วนหัวเพิ่มขึ้น):
ps aux k-pcpu | head -6
โปรดทราบว่าเวอร์ชันปัจจุบันของ ps มีความสามารถในการเรียงลำดับภายในโดยขึ้นอยู่กับรหัสฟิลด์ (ที่ระบุในหน้า man ps) รหัสฟิลด์สำหรับการใช้งานตัวประมวลผลคือ "c" คุณสามารถใช้--sort c
เมื่อสิ้นสุดคำสั่ง ps เช่นps aux --sort c
สิ่งนี้จะทำให้กระบวนการใช้ cpu มากที่สุดที่ด้านล่างของรายการ เรียงลำดับย้อนกลับของรายการโดยเพิ่มเครื่องหมายลบลงในโค้ดเขตข้อมูลที่ใช้เรียงลำดับเช่นps aux --sort -c
เพื่อเพิ่มจุดให้กับคำตอบที่มีค่าอื่น ๆ ฉันชอบ:
ps auxk-c | head -6
นอกจากนี้ยังพิมพ์ส่วนหัวซึ่งเป็นสิ่งที่ดี
นี่k
คือเหมือนกัน--sort
และc
ระบุ%cpu
เขตข้อมูลการใช้งาน CPU (นามแฝง) สำหรับการจัดเรียงในขณะที่-
สำหรับการจัดเรียงย้อนกลับ
คุณอาจจะเพิ่มมากขึ้น specifiers คั่นด้วย,
, specifiers เป็นไปได้อื่น ๆ : %mem
, args
, bsdstart
, pid
, gid
, uid
... ซึ่งคุณสามารถค้นหารายการเต็มรูปแบบใน รูปแบบมาตรฐาน specifiersส่วนของหน้าคน ตัวอย่างเช่น:
ps auxk -gid,-%mem | head -11
จะพิมพ์ 10 กระบวนการที่มี id กลุ่มสูงสุดเรียงลำดับภายในโดยใช้หน่วยความจำ
เครื่องมือบรรทัดคำสั่งps
มีตัวเลือกการเรียงลำดับของตัวเองดังนั้นฉันชอบ:
$ ps -eo pcpu,args --sort=-%cpu | head
คุณสามารถเพิ่มคอลัมน์ที่คุณต้องการ ดูตัวเลือกอื่น ๆ ที่มีให้ในps
หน้า man
$ man ps
top
บน Mac OS X มีตัวเลือกโหมดการบันทึกในรูปแบบของtop -l numberOfSamples
(ซึ่งดูเหมือนจะเทียบเท่ากับโหมดแบทช์ของ GNU top
) อย่างไรก็ตามมีความจำเป็นต้องมีอย่างน้อยสองตัวอย่างเนื่องจาก "ตัวอย่างแรกที่แสดงจะมี% CPU ที่ไม่ถูกต้องปรากฏขึ้นสำหรับแต่ละกระบวนการเนื่องจากมีการคำนวณโดยใช้เดลต้าระหว่างตัวอย่าง" ( man 1 top
)
# examples
top -o cpu -l 2 -n 5 | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu -U $(logname) | tail -n 6
top
จะแสดงสิ่งที่ใช้ CPU ของคุณ หากคุณติดตั้งไว้htop
จะช่วยให้คุณควบคุมได้ละเอียดยิ่งขึ้นรวมถึงการกรองโดย - ในกรณีของคุณ - CPU
ฉันเชื่อว่าวิธีที่ง่ายที่สุดในการดูกระบวนการซีพียู 5 อันดับแรกคือ
ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head -n 5
หากต้องการดูกระบวนการที่ใช้หน่วยความจำสูงสุด 5 อันดับแรกคือ
ps -eo pid,comm,%cpu,%mem --sort=-%mem | head -n 5
ที่ไหน
-e
: แฟล็กนี้ใช้เพื่อเลือกกระบวนการทั้งหมด
-o
: แฟล็กนี้ใช้เพื่อจัดรูปแบบตามที่ผู้ใช้กำหนด
pid
: อาร์กิวเมนต์นี้ใช้สำหรับแสดง pid
comm
: อาร์กิวเมนต์นี้ใช้สำหรับแสดงชื่อคำสั่งเท่านั้น ที่จะได้รับการใช้งานคำสั่งเต็มargs
, cmd
หรือcommand
%cpu
: อาร์กิวเมนต์นี้แสดงเปอร์เซ็นต์ของการใช้ cpu ของกระบวนการในรูปแบบ "##. #" ที่นี่pcpu
ยังสามารถใช้
%mem
: อาร์กิวเมนต์นี้แสดงอัตราส่วนของขนาดชุดที่อยู่อาศัยของกระบวนการต่อหน่วยความจำกายภาพบนเครื่องซึ่งแสดงเป็นเปอร์เซ็นต์ ที่นี่pmem
ยังสามารถใช้
--sort
: ระบุลำดับการเรียง หลังจาก=
ที่-
เครื่องหมายถูกใช้ในการเรียงลำดับค่าสูงสุดที่ด้านบนที่ตัวเลือกเริ่มต้นซึ่ง+
คือการแสดงรายการลำดับตัวเลขที่เพิ่มขึ้น [เช่น 0 ถึง n]
top -bn1 |sed -n '7,12'p
ทำงานเป็นซับเล็ก ๆ น้อย ๆ ที่ดีเช่นกัน
แม้ว่าฉันจะชอบใช้ ps กับ --sort = X -o X, Y, Z
ใช้ ps คุณสามารถดึงสถิติ grep ที่แตกต่างกันสำหรับกระบวนการหรือผู้ใช้แล้วรวมหรือ avg พวกเขาด้วยไปป์ awk