ฉันจะค้นหากระบวนการที่มีโหลดสูงสุดได้อย่างไร


10

ฉันมี VPS แกนเดียวที่มีค่าเฉลี่ยการโหลดเกิน 25 ครั้ง เมื่อถึงจุดนั้นมันจะช้าเกินทนและแม้กระทั่งคำสั่งที่ทำงานผ่านdashซึ่งเร็วกว่าและใช้ RAM น้อยกว่าbashใช้เวลาสักครู่ในการรัน ฉันจะติดตามกระบวนการที่ทำให้เกิดโหลดสูงได้อย่างไร


2
sudo apt install htopช่วยให้คุณมีเครื่องมือโหมดข้อความที่มีประโยชน์สำหรับวัตถุประสงค์นี้ (ใช้งานง่ายกว่ามาตรฐานtop) แต่topดีถ้าคุณต้องการพิมพ์ขนาดเล็ก
sudodus

2
ความยาวของคิวการโหลดบ่งบอกถึงจำนวนกระบวนการที่พร้อมใช้งาน CPU นี่อาจไม่จำเป็นต้องเป็นกระบวนการเดียวที่ทำให้เกิดปัญหา
Thorbjørn Ravn Andersen

คำตอบ:


16

htopคุณสามารถติดตั้ง สิ่งที่ดีเกี่ยวกับhtopคือมันจะแสดงการใช้งานของคุณต่อ CPU รวมถึงกราฟข้อความที่มีความหมายของหน่วยความจำและการใช้งานการสลับที่ด้านบน

วิธีติดตั้งhtop:

sudo apt-get install htop

เริ่มเลย:

htop

ป้อนคำอธิบายรูปภาพที่นี่

กดF6เพื่อเรียงลำดับกระบวนการจากนั้นใช้ปุ่มนำทางที่คุณสามารถเลือกPERCENT_CPUและกด Enter

ป้อนคำอธิบายรูปภาพที่นี่

หรือคุณสามารถใช้topวิธีนี้ ( แหล่งที่มา ):

top -b -n 1 | head -n 12

2
ในฐานะทางลัดคุณสามารถใช้Pเพื่อเรียงลำดับตามการใช้งานตัวประมวลผลMสำหรับหน่วยความจำหรือTเวลาและtเพื่อกลับไปที่เค้าโครงต้นไม้
deltab

น่าสนใจhtopมีการสนับสนุนเมาส์ขั้นพื้นฐาน หากคุณคลิกที่คอลัมน์ก็จะช่วยให้คุณสามารถจัดเรียงพวกเขาด้วย (ถ้าฉันไม่ผิด) มีการทำงานอื่น ๆ ที่ใช้งานได้กับเมาส์ของคุณ
Ismael Miguel

11

ด้านล่างนี้ถูกขโมยมาจากUnix.SE: ค้นหากระบวนการที่ใช้ CPU สูงสุดหากการใช้ CPU มากกว่า 60%? แม้ว่าแน่นอนปรับให้เข้ากับคำถามนี้

รายการกระบวนการโดยการใช้งาน CPU ที่เฉพาะเจาะจง

ps ahux --sort=-c | awk '{if($3>0.0)printf"%s %6d %s\n",$3,$2,$11}'

นี้จะช่วยให้รายชื่อของกระบวนการที่มีการใช้งานซีพียู>0.0% >50.0คุณสามารถเปลี่ยนค่านี้เป็นไปตามความต้องการของคุณเช่น แต่ละบรรทัดมีการใช้งาน CPU เป็นเปอร์เซ็นต์ PID และไฟล์ของกระบวนการ

รายการกระบวนการที่มีการใช้งาน CPU มากที่สุด

ps ahux --sort=-c | awk 'NR<=5{printf"%s %6d %s\n",$3,$2,$11}'

สิ่งนี้แสดงให้เห็นถึงกระบวนการ 5 อันดับแรกNR<=5ในปัจจุบันที่ทำให้เกิดภาระของ CPU


1

เมื่อวานฉันกำลังศึกษาอยู่awkและฉันเล่นกับอีกสองคำตอบ นี่คือผลลัพธ์:

  • รับเฉพาะกระบวนการที่มีการใช้งาน CPU สูงที่สุดโดยใช้ps aux:

    ps auxh | awk -v max=0 '{if($3>max){CPU=$3; PID=$2; NAME=$11; max=$3}} END{printf "%5s %6d %s\n",CPU,PID,NAME}'
    
  • รับสามกระบวนการด้วยการใช้ CPU ที่สูงที่สุดโดยใช้top:

    top -b -n 1 | awk 'NR>7 && NR<11 {printf "top: %5s %6d %s %s\n",$9,$1,$12,$13}'
    
  • รับสามกระบวนการด้วยการใช้ CPU ที่สูงที่สุดโดยใช้ps aux:

    ps auxh --sort=-c | awk 'NR<=3 {printf "ps:  %5s %6d %s\n",$3,$2,$11}'
    

ฉันพยายามเรียกใช้สองคำสั่งล่าสุดพร้อมกัน (ด้วย<command>; wait; <command>และ<command> & <command> &) แต่แล้วฉันก็รู้ว่ามันเป็นไปไม่ได้เลย :)


อ้างอิง:


อันสุดท้ายไม่ได้แสดงกระบวนการที่มีการใช้งาน CPU มากที่สุด แต่เริ่มต้นด้วยขั้นตอนที่สองคุณอาจหมายถึงที่NR>=2นั่น - ปรากฎว่าpsมีตัวเลือกhที่ละเว้นบรรทัดส่วนหัวดูคำตอบที่อัปเดตของฉัน
ของหวาน

@dessert คุณพูดถูก แต่ก่อนหน้านี้มันสั้นNR>=2แต่แล้วNR>1:) ฉันได้อัปเดตคำตอบแล้ว
pa4080

1

ใช้topคำสั่ง

top- แสดงกระบวนการลินุกซ์

โปรแกรมชั้นนำให้มุมมองเรียลไทม์แบบไดนามิกของระบบที่กำลังทำงานอยู่ สามารถแสดงข้อมูลสรุปของระบบรวมถึงรายการกระบวนการหรือเธรดที่กำลังถูกจัดการโดยเคอร์เนล Linux ประเภทของข้อมูลสรุประบบที่แสดงและประเภทลำดับและขนาดของข้อมูลที่แสดงสำหรับกระบวนการทั้งหมดที่ผู้ใช้สามารถกำหนดค่าได้และการกำหนดค่านั้นสามารถคงอยู่ตลอดการรีสตาร์ท

แหล่ง

กวดวิชาที่ดีของ YouTube

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.