সীমাহীন কোর আকারের নেতিবাচক? কোর ফাইলগুলি কোথায় যায়?


8

আমার একটি আপস্টার্ট কাজ রয়েছে যা মাঝেমধ্যে সেগমেন্টেশন ত্রুটির সাথে ক্র্যাশ হয়ে যায় এবং কোর ডাম্প সম্পর্কে আমার কয়েকটি প্রশ্ন রয়েছে।

প্রথমত, আমি একটি স্তবক যুক্ত করা উচিত:

limit core unlimited unlimited

সীমাহীন কোর মাপের অনুমতি দেওয়ার কোনও প্রতিকূলতা রয়েছে? সসীম সীমা কি আরও ভাল হতে পারে?

দ্বিতীয়ত, মূল ফাইলটি কোথায় যাবে? যদি ডিফল্ট কোনও মানক বা লজিকাল জায়গা না হয় তবে আমি কীভাবে এটি অন্য কোথাও প্রদর্শিত করব?


আপনি দয়া করে আমাদের আপস্টার্ট কাজটি আপডেট করুন
কাসিম

উত্তর:


6

সর্বাধিক পরিস্থিতিতে সীমাহীন কোর ডাম্পগুলি পরামর্শ দেওয়া হয় না, তবে প্রযুক্তিগতভাবে এটি ভাল। একটি কোর ডাম্পের বর্তমান প্রক্রিয়াটিতে কেবল "সমস্ত স্মৃতি" থাকে। সুতরাং বেশিরভাগ ক্ষেত্রে এটি কেবল আপনার র্যাম + অদলবদলের মতোই বড় হতে পারে। আশা করি এরপরে আপনার আরও ফাঁকা জায়গা থাকবে।

বাস্তব জীবনে মোট র‌্যাম + অদলবদলের তুলনায় তাদের "ছোট-ইশ" হওয়া উচিত।

ফাইলটি "বর্তমান ডিরেক্টরিতে" "শেষ হওয়া উচিত"। স্টার্ট টাস্কগুলির জন্য যা সাধারণত chdir হয় না /। যদি তারা ডিরেক্টরি পরিবর্তন করে তবে সেগুলি শিকার করার জন্য আপনার নিজেরাই। তবে আপনি তাদের পক্ষে একটি শক্ত পথ কোড করতে পারেন।

/proc/sys/kernel/core_patternআপনার "প্যাটার্ন" পরীক্ষা করতে সক্ষম হওয়া উচিত । আপনি যদি এমন কিছুতে প্যাটার্নটি সেট করেন echo "/var/log/core" > /proc/sys/kernel/core_patternতবে আপনার সমস্ত কোর / var / লগ এ শেষ হওয়া উচিত


5

একটি কোর ফাইল হ'ল প্রক্রিয়াটির একটি চিত্র যা অপারেটিং সিস্টেম দ্বারা তৈরি করা হয় যখন প্রক্রিয়াটি অপ্রত্যাশিতভাবে শেষ হয়। কোনও প্রোগ্রাম ত্রুটির কারণে, বা সিপিইউ বা মেমরি সুরক্ষা ব্যবস্থার লঙ্ঘনের কারণে কোর্স ফাইলগুলি তৈরি হয়। অপারেটিং সিস্টেম প্রোগ্রামটি মেরে এবং মূল ফাইল তৈরি করে।

কোনও প্রক্রিয়াতে কী ভুল হয়েছে তা নির্ধারণে এই ফাইলটি খুব কার্যকর হতে পারে। আপনার কাছে থাকা লিনাক্সের বিতরণ এবং সংস্করণের উপর নির্ভর করে কোর ফাইলগুলির উত্পাদন ডিফল্টরূপে সক্ষম করা যায়।

আপনি যদি মূল ফাইলগুলি না চান তবে আপনার স্টার্ট-আপ ফাইলগুলিতে "ulimit -c 0" সেট করুন। এটি অনেক সিস্টেমে ডিফল্ট; মধ্যে /etc/profileআপনি খুঁজে পেতে পারেন

যেহেতু কাটা ফাইলগুলি ব্যবহারিক ব্যবহারের নয়, তাই লিনাক্স কোর ফাইলের আকারটিকে "সীমাহীন" এ সেট করুন।

Usage of ulimit         Action
ulimit -c               # check the current corefile limit
ulimit -c 0             # turn off corefiles
ulimit -c x             # set the maximum corefile size to x number of 1024bytes
ulimit -c unlimited     # turn on corefiles with unlimited size
ulimit -n unlimited     # allows an unlimited number of open file descriptors
ulimit -p               # size of pipes
ulimit -s               # maximum native stack size for a process
ulimit -u               # number of user processes
help ulimit             #list of other options

মূল ফাইলটি প্রক্রিয়াটির বর্তমান কার্যনির্বাহী ডিরেক্টরিতে স্থাপন করা হয়েছে, যাভিএম প্রক্রিয়া এবং ফ্রি ডিস্কের জায়গার জন্য অনুমতি লিখতে বাধ্য।

কার্নেল স্তরের উপর নির্ভর করে একটি দরকারী কার্নেল বিকল্প উপলব্ধ রয়েছে যা কোরফিলগুলিকে আরও অর্থপূর্ণ নাম দেয়। রুট ব্যবহারকারী হিসাবে, বিকল্পটি সিস্টেপ্ট-ডাব্লু কার্নেল.কো_রেসার_পিড = 1 নিশ্চিত করে যে মূল ফাইলগুলির নাম "কোর.পিআইডি" আছে।

ulimit -S -c 0 > /dev/null 2>&1

আপনি যদি মূল ফাইলগুলি চান না তবে আপনার নিজের .bash_ প্রোফাইলে সেটি পুনরায় সেট করতে হবে:

ulimit -c 50000

কোর ফাইলগুলিকে অনুমতি দেয় তবে তাদের 50,000 বাইটে সীমাবদ্ধ করে।

কোর ফাইলগুলিতে আপনার আরও নিয়ন্ত্রণ রয়েছে /proc/sys/kernel/

উদাহরণস্বরূপ, আপনি পিডে ট্যাগ করা নির্মূল করতে পারেন

echo "0" > /proc/sys/kernel/core_uses_pid 

কোর ফাইলগুলি কেবলমাত্র "মূল" নামকরণ করা হবে। লোকেরা এ জাতীয় কাজগুলি করে যাতে কোনও ব্যবহারকারী "কোর" নামক একটি অ-লিখনযোগ্য ফাইল ডিরেক্টরিতে রাখতে চান যেখানে তারা কোর ডাম্পগুলি উত্পাদন করতে চান না। এটি কোনও ডিরেক্টরি (এমকেডির কোর) বা একটি ফাইল (টাচ কোর; chmod 000 কোর) হতে পারে।

তবে সম্ভবত আরও আকর্ষণীয় হ'ল আপনি এটি করতে পারেন:

mkdir /tmp/corefiles 
chmod 777 /tmp/corefiles 
echo "/tmp/corefiles/core" > /proc/sys/kernel/core_pattern 

সমস্ত কোরফাইলগুলি তখন টস করা হবে /tmp/corefiles(আপনি যদি এটি করেন তবে কোর_উস_পিড পরিবর্তন করবেন না)।

একটি সাধারণ স্ক্রিপ্ট দিয়ে এটি পরীক্ষা করুন:

# script that dumps core 
kill -s SIGSEGV $$ 

উবুন্টুয়ের অধীনে মূল ফাইলগুলি তৈরি করা ফাইলের মাধ্যমে নিয়ন্ত্রণ করা হয় /etc/default/collectd। আপনি সেট করে কোর ডাম্পগুলি তৈরি করতে সক্ষম করতে পারেন:

ENABLE_COREFILES=1

মূল ফাইলটি সনাক্ত করা হচ্ছে

ডেমন ক্র্যাশ হয়ে গেলে তার বর্তমান ওয়ার্কিং ডিরেক্টরিতে একটি ফাইল তৈরি করা হবে। ডিফল্টরূপে, এটি pkglocalstatedir, অর্থাৎ prefix/var/lib/collectd। আপনি যদি কোনও প্যাকেজ ইনস্টল করেন তবে এই ডিরেক্টরিটি সম্ভবত /var/lib/collectd

সূত্র: এপি লরেন্স, এবং আইবিএম

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.