ฉันมี VPS แกนเดียวที่มีค่าเฉลี่ยการโหลดเกิน 25 ครั้ง เมื่อถึงจุดนั้นมันจะช้าเกินทนและแม้กระทั่งคำสั่งที่ทำงานผ่านdash
ซึ่งเร็วกว่าและใช้ RAM น้อยกว่าbash
ใช้เวลาสักครู่ในการรัน ฉันจะติดตามกระบวนการที่ทำให้เกิดโหลดสูงได้อย่างไร
ฉันมี VPS แกนเดียวที่มีค่าเฉลี่ยการโหลดเกิน 25 ครั้ง เมื่อถึงจุดนั้นมันจะช้าเกินทนและแม้กระทั่งคำสั่งที่ทำงานผ่านdash
ซึ่งเร็วกว่าและใช้ RAM น้อยกว่าbash
ใช้เวลาสักครู่ในการรัน ฉันจะติดตามกระบวนการที่ทำให้เกิดโหลดสูงได้อย่างไร
คำตอบ:
htop
คุณสามารถติดตั้ง สิ่งที่ดีเกี่ยวกับhtop
คือมันจะแสดงการใช้งานของคุณต่อ CPU รวมถึงกราฟข้อความที่มีความหมายของหน่วยความจำและการใช้งานการสลับที่ด้านบน
วิธีติดตั้งhtop
:
sudo apt-get install htop
เริ่มเลย:
htop
กดF6
เพื่อเรียงลำดับกระบวนการจากนั้นใช้ปุ่มนำทางที่คุณสามารถเลือกPERCENT_CPU
และกด Enter
หรือคุณสามารถใช้top
วิธีนี้ ( แหล่งที่มา ):
top -b -n 1 | head -n 12
P
เพื่อเรียงลำดับตามการใช้งานตัวประมวลผลM
สำหรับหน่วยความจำหรือT
เวลาและt
เพื่อกลับไปที่เค้าโครงต้นไม้
htop
มีการสนับสนุนเมาส์ขั้นพื้นฐาน หากคุณคลิกที่คอลัมน์ก็จะช่วยให้คุณสามารถจัดเรียงพวกเขาด้วย (ถ้าฉันไม่ผิด) มีการทำงานอื่น ๆ ที่ใช้งานได้กับเมาส์ของคุณ
ด้านล่างนี้ถูกขโมยมาจากUnix.SE: ค้นหากระบวนการที่ใช้ CPU สูงสุดหากการใช้ CPU มากกว่า 60%? แม้ว่าแน่นอนปรับให้เข้ากับคำถามนี้
ps ahux --sort=-c | awk '{if($3>0.0)printf"%s %6d %s\n",$3,$2,$11}'
นี้จะช่วยให้รายชื่อของกระบวนการที่มีการใช้งานซีพียู>0.0
% >50.0
คุณสามารถเปลี่ยนค่านี้เป็นไปตามความต้องการของคุณเช่น แต่ละบรรทัดมีการใช้งาน CPU เป็นเปอร์เซ็นต์ PID และไฟล์ของกระบวนการ
ps ahux --sort=-c | awk 'NR<=5{printf"%s %6d %s\n",$3,$2,$11}'
สิ่งนี้แสดงให้เห็นถึงกระบวนการ 5 อันดับแรกNR<=5
ในปัจจุบันที่ทำให้เกิดภาระของ CPU
เมื่อวานฉันกำลังศึกษาอยู่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> &
) แต่แล้วฉันก็รู้ว่ามันเป็นไปไม่ได้เลย :)
อ้างอิง:
NR>=2
นั่น - ปรากฎว่าps
มีตัวเลือกh
ที่ละเว้นบรรทัดส่วนหัวดูคำตอบที่อัปเดตของฉัน
NR>=2
แต่แล้วNR>1
:) ฉันได้อัปเดตคำตอบแล้ว
ใช้top
คำสั่ง
top
- แสดงกระบวนการลินุกซ์โปรแกรมชั้นนำให้มุมมองเรียลไทม์แบบไดนามิกของระบบที่กำลังทำงานอยู่ สามารถแสดงข้อมูลสรุปของระบบรวมถึงรายการกระบวนการหรือเธรดที่กำลังถูกจัดการโดยเคอร์เนล Linux ประเภทของข้อมูลสรุประบบที่แสดงและประเภทลำดับและขนาดของข้อมูลที่แสดงสำหรับกระบวนการทั้งหมดที่ผู้ใช้สามารถกำหนดค่าได้และการกำหนดค่านั้นสามารถคงอยู่ตลอดการรีสตาร์ท
sudo apt install htop
ช่วยให้คุณมีเครื่องมือโหมดข้อความที่มีประโยชน์สำหรับวัตถุประสงค์นี้ (ใช้งานง่ายกว่ามาตรฐานtop
) แต่top
ดีถ้าคุณต้องการพิมพ์ขนาดเล็ก