จะบันทึกการโหลดของ CPU ไปยังไฟล์เพื่อตรวจสอบปัญหาได้อย่างไร
จะบันทึกการโหลดของ CPU ไปยังไฟล์เพื่อตรวจสอบปัญหาได้อย่างไร
คำตอบ:
วิธีนี้ใช้งานได้ดีมาก:
while true; do uptime >> uptime.log; sleep 1; done
นี้จะเข้าสู่ระบบการโหลด CPU uptime.log
ของคุณทุกวินาทีและผนวกไปยังแฟ้ม
จากนั้นคุณสามารถนำเข้าไฟล์นี้ลงใน Gnumeric หรือสเปรดชีต OpenOffice เพื่อสร้างกราฟที่ดี (เลือก 'คั่นด้วยช่องว่าง' เมื่อนำเข้า)
ดังที่ Scaine สังเกตเห็นสิ่งนี้จะไม่เพียงพอที่จะวินิจฉัยปัญหาได้ ดังนั้นนอกจากนี้เรียกใช้นี้ (หรือใช้คำตอบของเขาสำหรับส่วนนี้):
while true; do (echo "%CPU %MEM ARGS $(date)" && ps -e -o pcpu,pmem,args --sort=pcpu | cut -d" " -f1-5 | tail) >> ps.log; sleep 5; done
สิ่งนี้จะผนวกกระบวนการที่หิวมากที่สุด 10 อันดับของ CPU เข้ากับไฟล์ps.log
ทุก ๆ ห้าวินาที
โปรดทราบว่านี่ไม่ใช่ข้อมูลเรือเต็มรูปแบบที่top
จะให้คุณ นี่เป็นเพียง 10 อันดับแรกและเพียงแค่การใช้งาน CPU, การใช้งานหน่วยความจำและอาร์กิวเมนต์แรก (เช่นคำสั่งของพวกเขาโดยไม่มีข้อโต้แย้งเพิ่มเติมเช่นใน/usr/bin/firefox
)
หลังจากที่คุณใช้สเปรดชีตเพื่อสร้างกราฟเพื่อดูเวลาที่โหลด CPU ของคุณผ่านหลังคาคุณสามารถค้นหาไฟล์นี้เพื่อดูเวลาที่ใกล้ที่สุดเพื่อดูว่ากระบวนการใดทำให้เกิดปัญหา
นี่คือลักษณะของไฟล์เหล่านั้น:
uptime.log
~$ cat uptime.log
22:57:42 up 1 day, 4:38, 4 users, load average: 1.00, 1.26, 1.21
22:57:43 up 1 day, 4:38, 4 users, load average: 0.92, 1.24, 1.21
22:57:44 up 1 day, 4:38, 4 users, load average: 0.92, 1.24, 1.21
22:57:45 up 1 day, 4:38, 4 users, load average: 0.92, 1.24, 1.21
...
ps.log
%CPU %MEM ARGS Mo 17. Jan 23:09:47 CET 2011
0.7 0.9 /usr/bin/compiz
0.8 0.5 /usr/lib/gnome-panel/clock-applet
1.1 1.7 /opt/google/chrome/chrome
1.2 0.3 /usr/bin/pulseaudio
1.8 4.0 /opt/google/chrome/chrome
2.6 1.5 /opt/google/chrome/chrome
2.6 3.2 /usr/bin/google-chrome
3.6 2.6 /opt/google/chrome/chrome
4.9 1.5 /usr/bin/X
5.7 1.6 /opt/google/chrome/chrome
%CPU %MEM ARGS Mo 17. Jan 23:09:48 CET 2011
0.7 0.9 /usr/bin/compiz
0.8 0.5 /usr/lib/gnome-panel/clock-applet
1.0 1.7 /opt/google/chrome/chrome
1.2 0.3 /usr/bin/pulseaudio
1.8 4.0 /opt/google/chrome/chrome
2.6 1.5 /opt/google/chrome/chrome
2.6 3.2 /usr/bin/google-chrome
3.6 2.6 /opt/google/chrome/chrome
4.9 1.5 /usr/bin/X
5.7 1.6 /opt/google/chrome/chrome
...
ps
ไร้สาระให้ลองเรียกใช้เป็นรูท
คุณสามารถเรียกใช้top
คำสั่งในโหมดแบตช์โดยใช้-b
ตัวเลือกจากนั้นถ่ายโอนข้อมูลนั้นไปยังไฟล์
เมื่อเริ่มต้นพีซีของคุณเปิดเทอร์มินัลรัน
top -b > ~/cpu.txt
จากนั้นเมื่อพีซีของคุณค้างให้เปิดไฟล์ข้อความ (อาจใหญ่) และตรวจสอบรายการสุดท้ายเพื่อดูรายละเอียดเกี่ยวกับสิ่งที่ทำงานก่อนเกิดความผิดพลาด ในความเป็นจริงไฟล์จะมีขนาดใหญ่มากจนคุณควรจะใช้tail -250 ~/cpu.txt
แทน
ตรวจสอบ /var/log/kern.log ของคุณในกรณีที่ปัญหาของคุณเกี่ยวข้องกับฮาร์ดแวร์ (ไม่น่าเป็นไปได้ว่าเกิดขึ้นหลังจากการอัปเกรดเท่านั้น
ฉันพบคำตอบที่ยอดเยี่ยมจากChristopherสำหรับคำถามนี้เกี่ยวกับ Unix และ Linuxที่ใช้top
:
top -n 1 -b > top.out
สิ่งนี้จะทำให้คุณtop
หยุดซ้ำ 1 ครั้งแล้วจึงส่งไปที่ไฟล์
สำหรับผู้ที่ต้องการเรียกใช้คำสั่งนี้หลังจากเซสชัน putty (ไคลเอ็นต์ SSH) สิ้นสุด คุณสามารถใช้คำสั่งscreen
(หรือติดตั้งโดยใช้apt-get
)