यह पता लगाना कि लिनक्स OOM किलर द्वारा किस प्रक्रिया को मार दिया गया


172

जब लिनक्स मेमोरी (ओओएम) से बाहर निकलता है, तो ओओएम किलर कुछ उत्तराधिकार के आधार पर मारने की एक प्रक्रिया चुनता है (यह एक दिलचस्प पढ़ा है: http://lwn.net/Articles/317814/ )।

कोई प्रोग्राम कैसे तय कर सकता है कि हाल ही में ओओएम हत्यारे ने कौन सी प्रक्रियाएं मार दी हैं?

जवाबों:


171

इसे आज़माएं:

grep -i 'killed process' /var/log/messages

18
FWIW, मुझे उन संदेशों को syslog, या kern.log में मिलता है, लेकिन नहीं / var / log / संदेश
20

36
आप "egrep -i -r 'मार प्रक्रिया' / var / log /" का उपयोग करके इसे अन्य स्थानों पर भी खोज सकते हैं।
मेट्सोस

5
@jberryman: किसी कारण से, कुछ डिस्ट्रोइड में /var/log/syslogऔर /var/log/messagesदूसरों पर syslog चल रहा है । मुझे लगता है कि यह पूर्व के लिए डेबियन है और बाद के लिए रेड हैट, बीआईसीबीडब्ल्यू।
टॉम एंडरसन

5
"dmesg | egrep -i 'मार दी गई प्रक्रिया'" और आप लॉग को कहीं भी खोज सकते हैं (संग्रहीत लोगों सहित) :)
जॉन डी

2
egrepयहाँ कोई मतलब नहीं है। सादा पुराना grep, या अगर हम विशिष्ट हो रहे हैं fgrep, बहुत अधिक समझ में आता है। (तदनुसार उत्तर का संपादन।)
०१:४० पर ०१

148

इसे आज़माएं ताकि आपको इस बात की चिंता न हो कि आपके लॉग कहाँ हैं

dmesg | egrep -i 'killed process'

1
यह भी उपयोगी है, लेकिन जब मैं दुर्भाग्य से इसे समझा नहीं सकता, तो मैं देख रहा हूं कि इसमें परिणाम /var/log/messagesनहीं दिख रहे हैं dmesg/ /var/log/dmesg। यह किसी प्रकार की गलतफहमी हो सकती है, लेकिन ध्यान देने योग्य है कि दोनों दृष्टिकोणों का उपयोग करना एक अच्छा विचार हो सकता है।
कुंगफू

3
आपकी लॉग फ़ाइल के बारे में निश्चित नहीं है, लेकिन dmesg का उत्पादन सीमित आकार के रिंग बफर से है। यदि अन्य चीजों ने ओम-किलर के बाद से बफर को भर दिया है तो आप ओओम-किलर आउटपुट खो देंगे।
दान प्रिट्स

यह एकमात्र तरीका था, जिसमें मैंने पाया कि कैसे OpenVZ कंटेनर में उस प्रक्रिया को मार दिया गया था
igo

16
मैं भी dmesg -Tपठनीय टाइमस्टैम्प प्राप्त करने के लिए उपयोग करने का सुझाव देता हूं
gukoff

2
/ Var / log / संदेश की तुलना में, इसमें रूट विशेषाधिकारों की आवश्यकता नहीं है के फायदे हैं
Kineolyan

52

अब dstat आपके रनिंग सिस्टम में यह पता लगाने की सुविधा प्रदान करता है कि ओओम मैकेनिज्म द्वारा किस प्रक्रिया के लिए उम्मीदवार को मार दिया जाता है

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

बिना अंक का मतलब जाने यह जानकारी निरर्थक है, और यह कहीं भी प्रलेखित नहीं है। आप सभी देख सकते हैं कि स्कोर में वृद्धि हुई है, फिर प्रक्रिया को मार दिया जा रहा है, इसलिए शायद यह ओम हत्यारा था, या शायद यह कुछ और था, यह सुनिश्चित करने का कोई तरीका नहीं है।
लौरेंट

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.