লিনাক্স কোর ডাম্প অবস্থান সেট করা

Linaksa Kora Dampa Abasthana Seta Kara



লিনাক্সে 'কোর ডাম্প' কি?

যখন একটি প্রক্রিয়া অপ্রত্যাশিতভাবে প্রস্থান করে, এটি প্রায়শই আপনার সিস্টেমে একটি 'কোর ডাম্প' রেখে যায়। এর সাথে একটি প্রাসঙ্গিক বার্তা রয়েছে। একটি কোর একটি ডিবাগিং টুল হিসাবে কাজ করে এবং এটি মেমরির একটি চিত্র যা ডিবাগিং তথ্যও অন্তর্ভুক্ত করে। আপনি যদি এমন একজন ব্যবহারকারী হন যিনি কোনও প্রোগ্রাম ডিবাগ করতে চান না, আপনি কেবল মূলটি মুছে ফেলতে পারেন:

$ rm মূল

আপনি এটিকে স্পর্শ না করেও রাখতে পারেন, কারণ একটি নতুন ডাম্প করা হলে পুরানো কোরটি ওভাররাইট করা হয়। আপনি নিম্নলিখিত কমান্ডের সাহায্যে কোর ডাম্পিং নিষ্ক্রিয় করতে পারেন:







$ হ্রাস -গ 0

আমরা চাহিদা অনুযায়ী মূল ডাম্পগুলি তৈরি করতে পারি (উদাহরণস্বরূপ, একটি ডিবাগারের মাধ্যমে) অথবা সেগুলি সমাপ্তির পরে স্বয়ংক্রিয়ভাবে তৈরি করা যেতে পারে। কার্নেল একটি প্রোগ্রামের আকস্মিক প্রস্থানের ফলস্বরূপ কোর ডাম্প শুরু করে। অতিরিক্ত ক্রিয়াকলাপের জন্য এগুলি অন্য কোনও প্রোগ্রামে (যেমন systemd-coredump) পাঠানো হতে পারে।



সাধারণত যেমনটি হয়, ভাল স্থিতিশীলতা এবং সমস্যা সমাধানের জন্য ডেটা সংগ্রহ করা এবং ডিবাগ ডেটা থেকে সংবেদনশীল তথ্য প্রকাশের ঝুঁকির মধ্যে একটি বাণিজ্য বন্ধ রয়েছে৷



আমরা কি কভার করব?

এই নিবন্ধে, আমরা উবুন্টু 20.04 ওএস-এ কোর ডাম্পের অবস্থান কীভাবে সেট করতে হয় তা দেখব। এখন শুরু করা যাক.





একটি কোর ডাম্প তৈরি করা হচ্ছে

আসুন প্রথমে দেখি কিভাবে আমরা একটি কোর ডাম্প তৈরি করতে পারি। এই জন্য, আমরা Linux kill কমান্ড ব্যবহার করি। প্রথমে, একটি প্রক্রিয়ার পিআইডি খুঁজুন এবং তারপর একটি হত্যা সংকেত পাঠান। উদাহরণস্বরূপ, আসুন ঘুমের প্রক্রিয়া শুরু করি এবং তারপরে এটির পিআইডি দিয়ে হত্যা করি:

$ ঘুম 500

$ হত্যা -s SIGTRAP $ ( গ্রিপ ঘুম )



এখন যেহেতু আপনি একটি কোর ডাম্প তৈরি করতে শিখেছেন, আপনি নিম্নলিখিত পরবর্তী বিভাগে এটি ব্যবহার করতে পারেন।

যেখানে তারা যেতে না?

কোর ডাম্প ফাইলটি ডিফল্টরূপে core.pid নামে পরিচিত এবং অ্যাপ্লিকেশনটির কার্যকারী ডিরেক্টরিতে তৈরি করা হয়। এখানে, পিড হল প্রসেস আইডি।

ulimit টুলের সাহায্যে, আপনি বর্তমান শেল এবং এর পরে আসা যেকোনো শেলগুলির জন্য সিস্টেম রিসোর্স সীমা পেতে বা পরিবর্তন করতে পারেন। মূল ফাইলের আকারের সীমা যাচাই বা কনফিগার করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

$ হ্রাস -গ

মূল ফাইলটি সীমাবদ্ধ করা বা ছেঁটে ফেলা এড়াতে, নিশ্চিত করুন যে সীমাটি বিশ্বব্যাপী 'সীমাহীন' [1] তে সেট করা হয়েছে। নিম্নলিখিত লাইন যোগ করে এটি /etc/security/limits.conf এ করা যেতে পারে:

রুট - কোর সীমাহীন

* - কোর সীমাহীন

এখন, শুধু লগ আউট করুন এবং আপনার সেশনে সীমা প্রয়োগ করার জন্য আবার লগ ইন করুন।

কোর ডাম্পের অবস্থান কাস্টমাইজ করা

'sysctl kernel.core_pattern' কমান্ড বা '/proc/sys/kernel/core_pattern' সাধারণত কোর ডাম্পগুলি কোথায় যায় সেটি সেট করতে ব্যবহৃত হয়।

বর্তমান মূল প্যাটার্নের সেটিংস দেখতে নিম্নলিখিত কমান্ডটি প্রবেশ করান:

$ বিড়াল / proc / sys / কার্নেল / core_pattern

সাধারণত, আপনি এখানে 'কোর' হিসাবে তালিকাভুক্ত ডিফল্ট মান পাবেন।

কোর ডাম্প অবস্থান সেট করতে '/proc/sys/kernel/core_pattern' ব্যবহার করে

আসুন অস্থায়ীভাবে কোর ডাম্পগুলিকে একটি নতুন স্থানে পুনঃনির্দেশ করি, বলুন /tmp/dumps/core, “/proc/sys/kernel/core_pattern” ফাইলটি ব্যবহার করে [2] [3]। এখন, নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করুন:

ধাপ 1 . প্রথমে, মূল ডাম্পগুলি সংরক্ষণ করার জন্য একটি ডিরেক্টরি তৈরি করুন:

$ mkdir -পি / tmp / ডাম্প / কোর /

ধাপ ২ . এই ডিরেক্টরিতে প্রয়োজনীয় অনুমতি দিন:

$ chmod a+x / tmp / ডাম্প / কোর /

ধাপ 3 . এখন, অস্থায়ীভাবে মূল ডাম্প পাথ সেট করুন:

$ প্রতিধ্বনি '/tmp/dump/cores/core' | sudo টি / proc / sys / কার্নেল / core_pattern

আবার, বিশ্বব্যাপী সীমা সীমাহীন সেট করুন।

এখানে, আমরা নিচের মতো ফাইলের নামের সাথে কিছু অন্যান্য তথ্য যোগ করতে পারি:

$ প্রতিধ্বনি '/tmp/dump/cores/core_%e.%p_%t' | sudo টি / proc / sys / কার্নেল / core_pattern

এখানে ব্যবহৃত প্রতিটি পরামিতি নিম্নরূপ সংজ্ঞায়িত করা যেতে পারে:

% এবং: জন্য নির্বাহযোগ্য ফাইল নাম

% পি: জন্য প্রক্রিয়া আইডি বা পিড

% টি: জন্য একটি টাইমস্ট্যাম্প যোগ করা হচ্ছে

ধাপ 4 . এর পরে, পূর্ববর্তী সেটিংস স্থায়ীভাবে প্রয়োগ করতে আমাদের “/etc/sysctl.conf” ফাইলটি পরিবর্তন করতে হবে। এই ফাইলটি খুলুন:

$ sudo ন্যানো / ইত্যাদি / sysctl.conf

এখন, এই ফাইলে নিম্নলিখিত লাইন যোগ করুন:

kernel.core_pattern = / tmp / ডাম্প / কোর / মূল

এছাড়াও, এই লাইনের পরিবর্তে, আপনি এটি যোগ করতে পারেন:

kernel.core_pattern= '/tmp/dump/cores/core_%e.%p_%t'

এটাই আমাদের করতে হবে। এখন, 'কোর ডাম্প তৈরি করা' বিভাগে উল্লিখিত হিসাবে একটি কোর ডাম্প তৈরি করুন। এর পরে, আমরা পরীক্ষা করতে পারি যে আমাদের মূল ফাইল তৈরি হয়েছে কিনা:

$ ls -l / tmp / ডাম্প / কোর /

কোর ডাম্প অবস্থান সেট করতে 'Sysctl' কমান্ড ব্যবহার করে

আগেই উল্লেখ করা হয়েছে, আমরা একই উদ্দেশ্যে sysctl কমান্ড ব্যবহার করতে পারি। কোর ডাম্প অবস্থান এবং মূল ফাইলের বিন্যাস পরিবর্তন করা যাক:

ধাপ 1 . একটি নতুন ডিরেক্টরি তৈরি করুন এবং প্রয়োজনীয় অনুমতি দিন:

$ mkdir -পি / tmp / mydumps

$ chmod a+rwx / tmp / mydumps

ধাপ ২ . এখন, শুধুমাত্র নিম্নলিখিত কমান্ড চালান:

$ sudo sysctl -ভিতরে kernel.core_pattern= / tmp / mydumps / মূল_ % এবং. % p_ % t

ধাপ 3 . এখন, আবার, কোর ডাম্প তৈরি করুন যেমন আমরা আগে করেছি। এর পরে, মূল ফাইলটি তৈরি হয়েছে কিনা তা পরীক্ষা করুন:

$ ls -l / tmp / mydumps /

উবুন্টু সিস্টেমে, কোর ডাম্পগুলি প্রায়শই অ্যাপপোর্টে পাঠানো হয়। Red Hat-ভিত্তিক সিস্টেমের জন্য, এটি স্বয়ংক্রিয় বাগ রিপোর্টিং টুল (ABRT) এ ফরোয়ার্ড করা হতে পারে। প্রাথমিকভাবে, আমি কোর ডাম্প অবস্থান কনফিগার করতে একটি সমস্যার সম্মুখীন ছিলাম, তাই আমাকে উবুন্টু 20.04 এ অ্যাপ সম্পূর্ণরূপে অক্ষম করতে হয়েছিল। সম্ভবত, এটি Red Hat এবং অন্যান্যদের ক্ষেত্রেও হতে পারে।

উপসংহার

এই নিবন্ধে, আমরা দেখেছি কিভাবে আমরা উবুন্টু 20.04 ওএস-এ কোর ডাম্পের অবস্থান কাস্টমাইজ করতে পারি। কোর ডাম্পগুলি আপনাকে কী ভুল তা বুঝতে সাহায্য করতে পারে, তবে সেগুলি সংবেদনশীল ডেটা ফাঁস করার জন্য ভয়ানক। কোর ডাম্পগুলি যখনই প্রয়োজন না হয় তখনই অক্ষম করা উচিত এবং যখনই একেবারে প্রয়োজন তখনই সক্রিয় করা উচিত৷ এমন পরিস্থিতিতে, নিশ্চিত করুন যে ফাইলগুলি নিরাপদে সংরক্ষণ করা হয়েছে যাতে সাধারণ ব্যবহারকারীরা ডেটা অ্যাক্সেস করতে না পারে। উপরন্তু, আপনার সিদ্ধান্ত নির্বিশেষে, আপনি সবসময় আপনার কনফিগারেশন পরীক্ষা করা উচিত যাতে এটি উদ্দেশ্য অনুযায়ী কাজ করে।

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