เมื่อ Linux มีหน่วยความจำไม่เพียงพอ (OOM) OOM killer จะเลือกกระบวนการเพื่อฆ่าตามฮิวริสติกบางอย่าง (เป็นการอ่านที่น่าสนใจ: http://lwn.net/Articles/317814/ )
หนึ่งสามารถกำหนดโดยทางโปรแกรมว่ากระบวนการใดที่ฆาตกร OOM ฆ่าเมื่อไม่นานมานี้
เมื่อ Linux มีหน่วยความจำไม่เพียงพอ (OOM) OOM killer จะเลือกกระบวนการเพื่อฆ่าตามฮิวริสติกบางอย่าง (เป็นการอ่านที่น่าสนใจ: http://lwn.net/Articles/317814/ )
หนึ่งสามารถกำหนดโดยทางโปรแกรมว่ากระบวนการใดที่ฆาตกร OOM ฆ่าเมื่อไม่นานมานี้
คำตอบ:
ลองใช้ดู
grep -i 'killed process' /var/log/messages
/var/log/syslog
distros และ/var/log/messages
อื่น ๆ ฉันคิดว่ามันเป็น Debian สำหรับอดีตและ Red Hat สำหรับ BICBW หลัง
egrep
ไม่สมเหตุสมผลนี่ ธรรมดาเก่าgrep
หรือถ้าเรากำลังถูกเฉพาะfgrep
ทำให้รู้สึกมากขึ้น (แก้ไขคำตอบตามนั้น)
ลองทำเช่นนี้คุณไม่ต้องกังวลว่าไฟล์บันทึกของคุณอยู่ที่ไหน
dmesg | egrep -i 'killed process'
/var/log/messages
ที่ไม่ได้แสดงใน/dmesg
/var/log/dmesg
อาจเป็นการกำหนดค่าผิดประเภท แต่การสังเกตว่าการใช้ทั้งสองวิธีอาจเป็นความคิดที่ดี
dmesg -T
เพื่อให้สามารถบันทึกเวลาที่อ่านได้
ตอนนี้ dstat ให้คุณสมบัติในการค้นหาในระบบการทำงานของคุณซึ่งเป็นกระบวนการที่ผู้สมัครรับการฆ่าโดยกลไก oom
dstat --top-oom
--out-of-memory---
kill score
java 77
java 77
java 77
และตามหน้าคน
--top-oom
show process that will be killed by OOM the first
ลองใช้ดู
grep "Killed process" /var/log/syslog