একটি কোর ফাইল হ'ল প্রক্রিয়াটির একটি চিত্র যা অপারেটিং সিস্টেম দ্বারা তৈরি করা হয় যখন প্রক্রিয়াটি অপ্রত্যাশিতভাবে শেষ হয়। কোনও প্রোগ্রাম ত্রুটির কারণে, বা সিপিইউ বা মেমরি সুরক্ষা ব্যবস্থার লঙ্ঘনের কারণে কোর্স ফাইলগুলি তৈরি হয়। অপারেটিং সিস্টেম প্রোগ্রামটি মেরে এবং মূল ফাইল তৈরি করে।
কোনও প্রক্রিয়াতে কী ভুল হয়েছে তা নির্ধারণে এই ফাইলটি খুব কার্যকর হতে পারে। আপনার কাছে থাকা লিনাক্সের বিতরণ এবং সংস্করণের উপর নির্ভর করে কোর ফাইলগুলির উত্পাদন ডিফল্টরূপে সক্ষম করা যায়।
আপনি যদি মূল ফাইলগুলি না চান তবে আপনার স্টার্ট-আপ ফাইলগুলিতে "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
।
সূত্র: এপি লরেন্স, এবং আইবিএম