कोर डंप फ़ाइल स्थान (और नाम) कैसे सेट करें?


17

मैं CentOS 6 पर हूं, मैं जो एप्लिकेशन विकसित कर रहा हूं उसके लिए कोर डंप को सक्षम करने की कोशिश कर रहा हूं। मैंने रख दिया है:

ulimit -H -c unlimited >/dev/null
ulimit -S -c unlimited >/dev/null

मेरे बैश प्रोफाइल में, लेकिन एक कोर डंप अभी भी (एक नए टर्मिनल में) उत्पन्न नहीं हुआ।

मैंने अपने /etc/security/limits.conf को भी बदल दिया है ताकि सभी उपयोगकर्ताओं के लिए नरम सीमा शून्य हो।

मैं आउटपुट होने के लिए कोर फ़ाइलों का स्थान कैसे सेट करूँ? मैं स्थान निर्दिष्ट करना चाहता था और फ़ाइल नाम के भाग के रूप में डंप उत्पन्न होने के समय को जोड़ना चाहता था?


1
यह मददगार हो सकता है: stackoverflow.com/a/16048288/2808351
dhag

जवाबों:


27

CentOS 6 में कोर डंप का स्थान सेट करने के लिए आप संपादित कर सकते हैं /etc/sysctl.conf। उदाहरण के लिए यदि आप कोर डंप चाहते हैं /var/crash:

kernel.core_pattern = /var/crash/core-%e-%s-%u-%g-%p-%t

चर कहाँ हैं:

% e फ़ाइल नाम
% g है, gid प्रक्रिया
% p के अंतर्गत चल रही थी
% s प्रक्रिया का pid है जो कि d %% d के कारण संकेत है जो उस समय होता है जब d
% हुआ
u uid प्रक्रिया के तहत चल रहा था

साथ ही आपको जोड़ना होगा /etc/sysconfig/init

DAEMON_COREFILE_LIMIT='unlimited'

अब नए परिवर्तन लागू करें:

$ sysctl -p

लेकिन इस तरह से एक सफेद धब्बा है। यदि कर्नेल पैरामीटर kernel.core_pattern को हमेशा रीसेट किया जाता है और मान को मैन्युअल रूप से निर्दिष्ट किए जाने पर भी निम्न कॉन्फ़िगरेशन में रिबूट पर अधिलेखित कर दिया जाता है /etc/sysctl.conf:

|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e

संक्षेप में जब abrtd.serviceशुरू होता kernel.core_patternहै तो सिस्टम द्वारा स्थापित स्वचालित रूप से अधिलेखित हो जाता है abrt-addon-ccpp। इसे हल करने के दो तरीके हैं:

  1. कॉन्फ़िगरेशन फ़ाइल DumpLocationमें विकल्प सेट करना /etc/abrt/abrt.conf। गंतव्य फ़ाइल /var/crashको /etc/abrt/abrt.confकॉन्फ़िगरेशन फ़ाइल में DumpLocation = सेट करके निर्दिष्ट किया जा सकता है , और sysctl kernel.core_patternप्रदर्शित मूल्य एक ही है, लेकिन वास्तव में कोर फ़ाइल के तहत निर्देशिका बनाई जाएगी /var/crash

    यदि आपके पास SELinux सक्षम है तो भी आपको चलना होगा:

    $ semanage fcontext -a -t public_content_rw_t "/var/crash(/.*)?"  
    $ setsebool -P abrt_anon_write 1
    

    और अंत में पुनः आरंभ करें abrtd.service:

    $ service abrtd.service restart
    
  2. Abrtd सेवा बंद करो। kernel.core_patternओवरराइट नहीं किया जाएगा। - (मैंने कभी परीक्षण नहीं किया है)।


1
बहुत बढ़िया जवाब। यह ध्यान देने योग्य हो सकता है कि ईएफआई सिस्टम पर आपको सिस्टम फ्लैश में एक डंप भी मिलता है।
मोकेवेर

0

बिजीबॉक्स पर कोर डंप उत्पन्न करने के लिए हम स्क्रिप्ट को इनिशियलाइज़ करने वाले इनिशियलाइज़ में नीचे पैरामीटर्स को जोड़ सकते हैं। इसलिए जब भी हम सॉफ़्टवेयर और निर्यात पर्यावरण चर को आरंभ करते हैं तो हम नीचे की पंक्तियों को स्क्रिप्ट में कॉपी कर सकते हैं और साथ ही अगर हम कोई दुर्घटना देखते हैं तो कोर को डंप करने के लिए भी।

बिजीबॉक्स में कोर डंप का स्थान सेट करने के लिए आप खरीद फाइल सिस्टम का उपयोग करके कोर फाइल पथ सेट कर सकते हैं। उदाहरण के लिए, यदि आप कोर डंप चाहते हैं /tmp/crash/corefiles:

mkdir -p /tmp/crash/corefiles
chmod 775 /tmp/crash/corefiles
echo "/tmp/crash/corefiles/%e.%s.core" > /proc/sys/kernel/core_pattern

चर कहाँ हैं:

% e फ़ाइल नाम
% g है, gid प्रक्रिया
% p के अंतर्गत चल रही थी
% s प्रक्रिया का pid है जो कि d %% d के कारण संकेत है जो उस समय होता है जब d
% हुआ
u uid प्रक्रिया के तहत चल रहा था

इसके अलावा, आपको कोर फ़ाइल का आकार सेट करना होगा, नीचे कमांड कोर फाइल के आकार को असीमित पर सेट करता है

ulimit -c unlimited

अब एक प्रक्रिया के भीतर प्रत्येक थ्रेड के लिए सेट किए गए कोर फ़ाइल आकार की जांच करने के लिए हम उपयोग कर सकते हैं

cat /proc/<PID>/limits

उपरोक्त आदेश का उत्पादन:

Limit                     Soft Limit           Hard Limit           Units     
Max cpu time              unlimited            unlimited            seconds   
Max file size             unlimited            unlimited            bytes     
Max data size             unlimited            unlimited            bytes     
Max stack size            8388608              unlimited            bytes     
Max core file size        unlimited            unlimited            bytes     
Max open files            10000                10000                files     
Max address space         unlimited            unlimited            bytes     
Max resident set          unlimited            unlimited            bytes     
Max processes             31868                31868                processes 
Max locked memory         65536                65536                bytes     
Max file locks            unlimited            unlimited            locks     
Max pending signals       31868                31868                signals   
Max msgqueue size         819200               819200               bytes     
Max nice priority         0                    0                    
Max realtime priority     0                    0                    
Max realtime timeout      unlimited            unlimited            us      

जैसा कि हम उपरोक्त आउटपुट से देख सकते हैं कि अधिकतम कोर फ़ाइल का आकार असीमित है।

अधिक जानकारी के लिए कृपया इस लिंक पर जाएँ। लिनक्स अनुप्रयोग डिबगिंग तकनीक / कोर फाइलें

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