ฉันจะบันทึกการใช้งาน CPU ต่อกระบวนการได้อย่างไร


18

ฉันมีกล่องบน Linode ที่มีพฤติกรรมแปลก ๆ ทุกขณะนี้จากนั้น CPU และดิสก์ I / O จะถ่ายภาพได้ถึง 100% และเซิร์ฟเวอร์จะไม่ตอบสนองและต้องทำการบู๊ต ฉันต้องการตรวจสอบให้ดีขึ้นว่าเกิดอะไรขึ้น แต่ฉันไม่รู้ว่าจะค้นหาผู้ที่รับผิดชอบ CPU และ I / O ทั้งหมดนั้นได้อย่างไร ฉันใช้ Gentoo 2.6.18

คำตอบ:


20

คุณสามารถลองทำสิ่งนี้:

while true; do ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10 >> logfile.txt; printf "\n" >> logfile.txt; sleep 3; done

ที่จะแสดงกระบวนการสิบอันดับแรกในแง่ของการใช้งาน CPU คุณสามารถเปลี่ยนจำนวนกระบวนการที่แสดงโดยเปลี่ยน 10 ใน "head -10" เป็นหมายเลขอื่นและความถี่ที่จะปรับปรุงโดยการเปลี่ยน 3 ใน "sleep 3" หรือแยกส่วน "sleep 3" ทั้งหมด


5
ให้แน่ใจว่าคุณมีการเรียงลำดับของการนอนหลับอยู่ในนั้นบางอย่างอื่นมีโอกาสที่ดีที่กระบวนการเปลือกของคุณจะเป็นในด้านบน 10 :)
jedberg

ผมคิดว่าsort -nrจะทำดีกว่าที่จะเรียงลำดับตัวเลข (อย่างน้อยบนของอูบุนตู / เดเบียน boxen)
sehe

2
BTW คุณควรให้ความสำคัญกับกระบวนการนี้มากที่สุดเพื่อให้กระบวนการนี้ยังคงมีประโยชน์ในช่วงที่มีการโหลดสูงสุด (ซึ่งเป็นจุดสิ้นสุดของชีวิตหลังจากทั้งหมด)
spacediver

12

ลองดูที่มันจะเขียนบันทึกไบนารีของทุกสิ่งที่คุณอาจต้องการแล้วคุณสามารถใช้ top เช่น gui ผ่านช่วงเวลาของวัน (เริ่มต้นคือการใช้ข้อมูลทุก 5 นาที) http://www.atcomputing.nl/Tools/atop/


6

ฉันคิดว่าmuninเป็นหนึ่งในเครื่องมือตรวจสอบสินค้าที่จะช่วยให้คุณได้รับข้อมูลบางอย่างเกี่ยวกับกิจกรรมของกล่องของคุณ นอกจากนี้ยังมีเครื่องมือบรรทัดคำสั่งบางอย่างเช่นsar , iostat, ps, top สำหรับการใช้งานดังกล่าว


5

คำตอบอื่น ๆ แสดงให้คุณเห็นว่าคุณสามารถดูว่าเกิดอะไรขึ้นบ้างในปัจจุบันซึ่งไม่ช่วยหากระบบรีบูทแล้ว

หากคุณต้องการให้ข้อมูลนี้ถูกบันทึกไว้สำหรับลูกหลาน (หรือการเรียกเก็บเงินหรือการใช้งานอื่น ๆ ที่คุณอาจมี) สิ่งที่คุณต้องการคือกระบวนการบัญชี

นี่คือวิธีการที่ฉันค้นพบ แต่ฉันจะซื่อสัตย์ - เป็นเวลาสิบปีแล้วที่ฉันใช้การบัญชีกระบวนการ

http://tldp.org/HOWTO/Process-Accounting/


2

วิธีที่ใช้งานง่ายยิ่งขึ้นในการแก้ไขปัญหาของ shawn สำหรับการตรวจสอบแบบใกล้เวลาจริง:

while true; do clear; ps -eo pcpu,pmem,pid,user,args --sort=-pcpu c|head -20; sleep 1; done

สิ่งนี้จะให้มุมมองแบบคงที่ของกระบวนการ 20 อันดับแรกที่จะรีเฟรชทุก ๆ 1 วินาที ตัวเลือก "c" ในคำสั่ง ps จะพิมพ์ชื่อปฏิบัติการกระบวนการแทนคำสั่ง args ทั้งหมด คุณสามารถละเว้นตัวเลือกนี้หากคุณต้องการข้อมูลคำสั่งทั้งหมดแทน คอลัมน์การใช้หน่วยความจำ% ยังเพิ่ม


1

Gentoo ไม่มีคำสั่ง "top" ในฐานะ wel หรือไม่?

machine:~/# top

ควรให้สถานะการรันของโปรแกรมที่ทำให้โหลดมากที่สุด


ใช่ฉันรู้ แต่ฉันต้องการบันทึกไว้เพื่อที่ฉันจะได้เห็นประวัติในภายหลัง เมื่อ CPU spikes เครื่องไม่ตอบสนองดังนั้นฉันไม่สามารถเข้าสู่ระบบและเรียกใช้topเพื่อดูว่าใครเป็นผู้กระทำผิด ฉันต้องการตรวจสอบอีกครั้งในภายหลังและดูกระบวนการที่ทำ
Helder S Ribeiro
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.