এলএফসিএস: লিনাক্স প্রসেসগুলি রিসোর্স ব্যবহার এবং প্রতি ব্যবহারকারী ভিত্তিতে প্রক্রিয়া সীমা নির্ধারণ করুন - অংশ 14
2 শে ফেব্রুয়ারী, 2016 থেকে কার্যকর এলএফসিএস শংসাপত্র পরীক্ষার উদ্দেশ্যগুলিতে সাম্প্রতিক পরিবর্তনের কারণে আমরা এলএফসিইসি সিরিজে প্রয়োজনীয় নিবন্ধগুলিও যুক্ত করছি।
প্রতিটি লিনাক্স সিস্টেম প্রশাসকের কীভাবে হার্ডওয়্যার, সংস্থানসমূহ এবং কী প্রক্রিয়াগুলির নিখরচায়তা এবং উপলব্ধতা যাচাই করতে হয় তা জানতে হবে to এছাড়াও, প্রতি ব্যবহারকারীর ভিত্তিতে রিসোর্স সীমা নির্ধারণ করাও তার দক্ষতার সেটের অংশ হতে হবে।
অপ্রত্যাশিত উত্পাদন ডাউনটাইম এবং অর্থের ক্ষতির কারণ হতে পারে এমন সম্ভাব্য সমস্যাগুলি এড়াতে সিস্টেমটি হার্ডওয়্যার এবং সফ্টওয়্যার উভয়ই সঠিকভাবে আচরণ করছে তা নিশ্চিত করার জন্য এই নিবন্ধে আমরা কয়েকটি উপায় অন্বেষণ করব।
লিনাক্স রিপোর্টিং প্রসেসরের পরিসংখ্যান
এমপিস্ট্যাট দিয়ে আপনি প্রতিটি প্রসেসরের জন্য ক্রিয়াকলাপ বা সামগ্রিকভাবে সিস্টেমকে এককালীন স্ন্যাপশট বা গতিশীল উভয়ই দেখতে পারবেন।
এই সরঞ্জামটি ব্যবহার করার জন্য আপনাকে সিস্টেমে ইনস্টল করতে হবে:
# yum update && yum install sysstat [On CentOS based systems] # aptitutde update && aptitude install sysstat [On Ubuntu based systems] # zypper update && zypper install sysstat [On openSUSE systems]
সিস্টেস্ট সম্পর্কে আরও পড়ুন এবং এটির ইউটিলিটিগুলি লিনাক্সে শিখুন সিস্টেস্ট এবং এর ইউটিলিটিস এমপিস্ট্যাট, পিডস্ট্যাট, আইওস্ট্যাট এবং সারে
একবার আপনি এমপিস্ট্যাট ইনস্টল হয়ে গেলে, প্রসেসরের পরিসংখ্যানগুলির প্রতিবেদন তৈরি করতে এটি ব্যবহার করুন।
সমস্ত সিপিইউ-এর জন্য সিপিইউ ব্যবহারের ( -u
) 3 টি বিশ্বব্যাপী প্রতিবেদন প্রদর্শনের জন্য ( -P
সমস্ত নির্দেশিত) 2 সেকেন্ডের ব্যবধানে করুন:
# mpstat -P ALL -u 2 3
Linux 3.19.0-32-generic (linux-console.net) Wednesday 30 March 2016 _x86_64_ (4 CPU) 11:41:07 IST CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 11:41:09 IST all 5.85 0.00 1.12 0.12 0.00 0.00 0.00 0.00 0.00 92.91 11:41:09 IST 0 4.48 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 94.53 11:41:09 IST 1 2.50 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 97.00 11:41:09 IST 2 6.44 0.00 0.99 0.00 0.00 0.00 0.00 0.00 0.00 92.57 11:41:09 IST 3 10.45 0.00 1.99 0.00 0.00 0.00 0.00 0.00 0.00 87.56 11:41:09 IST CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 11:41:11 IST all 11.60 0.12 1.12 0.50 0.00 0.00 0.00 0.00 0.00 86.66 11:41:11 IST 0 10.50 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 88.50 11:41:11 IST 1 14.36 0.00 1.49 2.48 0.00 0.00 0.00 0.00 0.00 81.68 11:41:11 IST 2 2.00 0.50 1.00 0.00 0.00 0.00 0.00 0.00 0.00 96.50 11:41:11 IST 3 19.40 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 79.60 11:41:11 IST CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 11:41:13 IST all 5.69 0.00 1.24 0.00 0.00 0.00 0.00 0.00 0.00 93.07 11:41:13 IST 0 2.97 0.00 1.49 0.00 0.00 0.00 0.00 0.00 0.00 95.54 11:41:13 IST 1 10.78 0.00 1.47 0.00 0.00 0.00 0.00 0.00 0.00 87.75 11:41:13 IST 2 2.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 97.00 11:41:13 IST 3 6.93 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 92.57 Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle Average: all 7.71 0.04 1.16 0.21 0.00 0.00 0.00 0.00 0.00 90.89 Average: 0 5.97 0.00 1.16 0.00 0.00 0.00 0.00 0.00 0.00 92.87 Average: 1 9.24 0.00 1.16 0.83 0.00 0.00 0.00 0.00 0.00 88.78 Average: 2 3.49 0.17 1.00 0.00 0.00 0.00 0.00 0.00 0.00 95.35 Average: 3 12.25 0.00 1.16 0.00 0.00 0.00 0.00 0.00 0.00 86.59
নির্দিষ্ট সিপিইউর জন্য একই পরিসংখ্যান দেখতে (নিম্নলিখিত উদাহরণে সিপিইউ 0), ব্যবহার করুন:
# mpstat -P 0 -u 2 3
Linux 3.19.0-32-generic (linux-console.net) Wednesday 30 March 2016 _x86_64_ (4 CPU) 11:42:08 IST CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 11:42:10 IST 0 3.00 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 96.50 11:42:12 IST 0 4.08 0.00 0.00 2.55 0.00 0.00 0.00 0.00 0.00 93.37 11:42:14 IST 0 9.74 0.00 0.51 0.00 0.00 0.00 0.00 0.00 0.00 89.74 Average: 0 5.58 0.00 0.34 0.85 0.00 0.00 0.00 0.00 0.00 93.23
উপরের কমান্ডগুলির আউটপুট এই কলামগুলি দেখায়:
-
CPU
: একটি পূর্ণসংখ্যা হিসাবে প্রসেসর সংখ্যা বা সমস্ত প্রসেসরের জন্য গড় হিসাবে শব্দটি। -
% us
: ব্যবহারকারী স্তরের অ্যাপ্লিকেশন চলাকালীন সিপিইউ ব্যবহারের শতাংশ। -
% দুর্দান্ত
:% usr
হিসাবে একই, তবে দুর্দান্ত অগ্রাধিকার সহ। -
% s
: কার্নেল অ্যাপ্লিকেশনগুলি সম্পাদন করার সময় ঘটে যাওয়া সিপিইউ ব্যবহারের শতাংশ। এটিতে বাধা বা হার্ডওয়্যার পরিচালনার জন্য ব্যয় করা সময় অন্তর্ভুক্ত নয় -
% iowait
: প্রদত্ত সিপিইউ (বা সমস্ত) নিষ্ক্রিয় থাকাকালীন সময়ের শতাংশ, সেই সময় সেই সিপিইউতে একটি সংস্থান-সংক্রান্ত I/O অপারেশন নির্ধারিত ছিল। আরও বিস্তারিত ব্যাখ্যা (উদাহরণ সহ) এখানে পাওয়া যাবে -
% irq
: হার্ডওয়্যার বিঘ্নিত সার্ভিসিংয়ে ব্যয় করা সময়ের শতাংশ। -
% নরম
:% ইরক
হিসাবে একই, তবে সফ্টওয়্যার বাধা রয়েছে with -
% চুরি
: ভার্চুয়াল মেশিন, অতিথি হিসাবে, সিপিইউ-র প্রতিযোগিতা করার সময় হাইপারভাইজারের মনোযোগকে "জয়ী" করে তুলতে স্বেচ্ছাসেবীর অপেক্ষায় (চুরি বা চুরির সময়) ব্যয় করা সময়ের শতাংশের পরিমাণ। এই মানটি যতটা সম্ভব ছোট রাখা উচিত। এই ক্ষেত্রে একটি উচ্চ মানের অর্থ ভার্চুয়াল মেশিন স্টল করছে - বা শীঘ্রই হবে -
% অতিথি
: ভার্চুয়াল প্রসেসর চালাতে ব্যয় করা সময়ের শতাংশ। -
% নিষ্কলঙ্ক
: সিপিইউ (গুলি) কোনও কাজ সম্পাদন করে না এমন সময় শতাংশ। আপনি যদি এই কলামটিতে স্বল্প মূল্য লক্ষ্য করেন, এটি একটি ভারী বোঝার নীচে সিস্টেমের স্থাপনের ইঙ্গিত। সেক্ষেত্রে আপনাকে প্রক্রিয়া তালিকার আরও ঘনিষ্ঠভাবে নজর দেওয়া উচিত, কারণ এটি কী কারণে ঘটছে তা নির্ধারণ করার জন্য আমরা এক মিনিটের মধ্যে আলোচনা করব
প্রসেসরটিকে কিছুটা উচ্চ লোডের নিচে রাখার জন্য, নিম্নলিখিত কমান্ডগুলি চালনা করুন এবং তারপরে একটি পৃথক টার্মিনালে এমপিস্ট্যাট (নির্দেশিত হিসাবে) চালনা করুন:
# dd if=/dev/zero of=test.iso bs=1G count=1 # mpstat -u -P 0 2 3 # ping -f localhost # Interrupt with Ctrl + C after mpstat below completes # mpstat -u -P 0 2 3
অবশেষে, "স্বাভাবিক" পরিস্থিতিতে এমপিস্ট্যাট আউটপুট সাথে তুলনা করুন:
উপরের চিত্রটিতে আপনি দেখতে পাচ্ছেন, % নিষ্কলুষ
কলাম দ্বারা উল্লিখিত প্রথম দুটি উদাহরণের সময় সিপিইউ 0 ভারী বোঝার অধীনে ছিল।
পরবর্তী বিভাগে আমরা কীভাবে এই সংস্থান-ক্ষুধার্ত প্রক্রিয়াগুলি সনাক্ত করতে পারি, সেগুলি সম্পর্কে আরও তথ্য কীভাবে পাওয়া যায় এবং কীভাবে উপযুক্ত পদক্ষেপ নেওয়া যায় তা নিয়ে আলোচনা করব।
লিনাক্স প্রসেসগুলি রিপোর্ট করা হচ্ছে
সিপিইউ ব্যবহারের মাধ্যমে সেগুলি বাছাই করার প্রক্রিয়াগুলি তালিকা করতে আমরা -eo
(ব্যবহারকারী-সংজ্ঞায়িত ফর্ম্যাট সহ সমস্ত প্রক্রিয়া নির্বাচন করতে) এবং --sort
(একটি পছন্দসই বাছাই অর্ডার নির্দিষ্ট করতে) বিকল্পগুলি যেমন:
# ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu
উপরের কমান্ডটি কেবল পিআইডি
, পিপিআইডি
, প্রক্রিয়াটির সাথে সম্পর্কিত কমান্ড এবং সিপিইউ এবং রu্যাম ব্যবহারের শতাংশকে সাজানো সিপু ব্যবহারের শতাংশের দ্বারা সাজানো দেখায় । .Iso ফাইল তৈরির সময় কার্যকর করা হলে, আউটপুটটির প্রথম কয়েকটি লাইন এখানে:
একবার আমরা আগ্রহের প্রক্রিয়াটি সনাক্ত করে নিই (যেমন পিআইডি = 2822
সহ), আমরা /proc/PID
(/proc/2822 <এ নেভিগেট করতে পারি)/কোড> এই ক্ষেত্রে) এবং একটি ডিরেক্টরি তালিকা করুন।
এই ডিরেক্টরিটি যেখানে চলমান চলাকালীন এই নির্দিষ্ট প্রক্রিয়া সম্পর্কিত বিশদ তথ্য সহ বেশ কয়েকটি ফাইল এবং উপ-ডিরেক্টরিগুলি রাখা হয়।
-
/proc/2822/io
এ প্রক্রিয়াটির জন্য আইও পরিসংখ্যান রয়েছে (আইও ক্রিয়াকলাপের সময় অন্যদের মধ্যে পঠিত এবং লিখিত অক্ষর এবং বাইট সংখ্যা) -
/proc/2822/attr/current
প্রক্রিয়াটির বর্তমান সেলিনাক্স সুরক্ষা বৈশিষ্ট্যগুলি দেখায় -
/proc/2822/cgroup
কন্ট্রোল গ্রুপগুলি (সংক্ষেপে সিগ্রুপ) বর্ণনা করে যা CONFIG_CGROUPS কার্নেল কনফিগারেশন বিকল্প সক্ষম করা থাকলে প্রক্রিয়াটি অন্তর্ভুক্ত করে, যা আপনি যাচাই করতে পারবেন:
# cat /boot/config-$(uname -r) | grep -i cgroups
বিকল্পটি সক্ষম থাকলে, আপনার দেখতে হবে:
CONFIG_CGROUPS=y
cgroups
ব্যবহার করে আপনি উবুন্টু 14.04 সার্ভার ডকুমেন্টেশনের কন্ট্রোল গ্রুপ বিভাগের 4 অধ্যায় 4 এর মধ্যে 1 হিসাবে ব্যাখ্যা হিসাবে প্রতিটি প্রক্রিয়া ভিত্তিতে অনুমোদিত সংস্থান ব্যবহারের পরিমাণ পরিচালনা করতে পারেন।
/proc/2822/fd
একটি ডিরেক্টরি যা প্রক্রিয়াটি খোলার জন্য প্রতিটি ফাইল বর্ণনাকারীর জন্য একটি প্রতীকী লিঙ্ক ধারণ করে। নীচের চিত্রটি .iso চিত্র তৈরি করতে tty1 (প্রথম টার্মিনাল) থেকে শুরু হওয়া প্রক্রিয়াটির জন্য এই তথ্যটি দেখায়:
উপরের চিত্রটি দেখায় যে স্টিডিন (ফাইল বর্ণনাকারী 0), স্টডআউট (ফাইল বর্ণনাকারী 1), এবং স্টেডার (ফাইল বর্ণনাকারী 2) যথাক্রমে/ডিভ/শূন্য, /root/test.iso এবং/dev/tty1 এ ম্যাপ করা হয়েছে।
/proc
সম্পর্কে আরও তথ্য "The /proc
ফাইল সিস্টেম" ফাইলটি কার্নেল.অর্গ দ্বারা রক্ষিত ও রক্ষণাবেক্ষণে এবং লিনাক্স প্রোগ্রামার ম্যানুয়ালটিতে পাওয়া যাবে।
লিনাক্সে প্রতি ব্যবহারকারী ভিত্তিতে রিসোর্স সীমা নির্ধারণ করা
যদি আপনি সতর্ক না হন এবং কোনও ব্যবহারকারীর সীমাহীন সংখ্যক প্রক্রিয়া চালানোর অনুমতি দেন, তবে অবশেষে আপনি অপ্রত্যাশিত সিস্টেমের শাটডাউনটি অনুভব করতে পারেন বা সিস্টেমটি ব্যবহারযোগ্য অবস্থায় না যাওয়ার কারণে আপনি লক আউট হয়ে যেতে পারেন। এটি যাতে না ঘটে তার জন্য, ব্যবহারকারীরা কতগুলি প্রক্রিয়া শুরু করতে পারেন তার একটি সীমা আপনার করা উচিত।
এটি করতে, /etc/security/limits.conf সম্পাদনা করুন এবং সীমাটি নির্ধারণ করতে ফাইলের নীচে নিম্নলিখিত লাইনটি যুক্ত করুন:
* hard nproc 10
প্রথম ক্ষেত্রটি কোনও ব্যবহারকারী, একটি গোষ্ঠী বা তাদের সমস্ত (*)
ইঙ্গিত করতে ব্যবহার করা যেতে পারে, তবে দ্বিতীয় ক্ষেত্রটি প্রক্রিয়া সংখ্যার (এনআরপিওসি) থেকে 10 পর্যন্ত একটি কঠোর সীমা প্রয়োগ করে To পরিবর্তনগুলি প্রয়োগ করুন, লগ আউট এবং ব্যাক ইন যথেষ্ট।
সুতরাং, আসুন দেখে নেওয়া যাক রুট ব্যতীত কোনও নির্দিষ্ট ব্যবহারকারী (বৈধ হোক বা না) শেল কাঁটা বোমা শুরু করার চেষ্টা করে তবে কী ঘটে। যদি আমরা সীমাবদ্ধতা প্রয়োগ না করে থাকি তবে এটি প্রথমে কোনও ফাংশনের দুটি উদাহরণ চালু করে এবং তারপরে একটি একেবারে নিকটবর্তী লুপে নকল করে। সুতরাং, এটি অবশেষে আপনার সিস্টেমকে ক্রল এনে দেবে।
তবে উপরোক্ত বিধিনিষেধটি স্থানে রেখে কাঁটা বোমাটি সফল হয় না তবে সিস্টেম অ্যাডমিনিস্ট্রেটর এটির সাথে সম্পর্কিত প্রক্রিয়াটি না মেরে ব্যবহারকারী এখনও লক আউট হয়ে যায়:
টিআইপি: উলিমিট দ্বারা সম্ভব অন্যান্য সম্ভাব্য বিধিনিষেধগুলি সীমাবদ্ধতা
ফাইলটিতে নথিভুক্ত করা হয়েছে।
লিনাক্স অন্যান্য প্রক্রিয়া পরিচালনা সরঞ্জাম
পূর্বে আলোচিত সরঞ্জামগুলির পাশাপাশি একটি সিস্টেম প্রশাসকেরও এটির প্রয়োজন হতে পারে:
ক) রেনিস ব্যবহার করে একটি প্রক্রিয়া প্রয়োগের অগ্রাধিকার (সিস্টেম সংস্থার ব্যবহার) সংশোধন করুন। এর অর্থ হ'ল কার্নেল নির্ধারিত অগ্রাধিকারের ভিত্তিতে প্রক্রিয়াটির জন্য কম-বেশি সিস্টেম সংস্থানগুলি বরাদ্দ করবে (একটি কোড সাধারণত "কোডস" হিসাবে পরিচিত -20
থেকে 19 কোডে >)।
মান যত কম হবে, কার্যকরকরণের অগ্রাধিকার তত বেশি। নিয়মিত ব্যবহারকারীরা (মূল ব্যতীত) কেবলমাত্র তাদের উচ্চতর মানের (যার অর্থ একটি নিম্ন প্রয়োগের অগ্রাধিকার) এর মালিকানাধীন প্রক্রিয়াগুলির কমনীয়তাটি সংশোধন করতে পারে, যেখানে রুট কোনও প্রক্রিয়াটির জন্য এই মানটি সংশোধন করতে পারে এবং এটি বাড়িয়ে বা হ্রাস করতে পারে।
রেনিসের প্রাথমিক বাক্য গঠনটি নিম্নরূপ:
# renice [-n] <new priority> <UID, GID, PGID, or empty> identifier
যদি নতুন অগ্রাধিকার মানের পরে যুক্তিটি উপস্থিত না হয় (খালি), এটি ডিফল্টরূপে পিআইডি সেট করা থাকে। সেক্ষেত্রে, PID = সনাক্তকারী সহ প্রক্রিয়াটির বিশেষত্বটি <নতুন অগ্রাধিকার>
তে সেট করা আছে।
খ) যখন প্রয়োজন হয় তখন একটি প্রক্রিয়াটির সাধারণ সম্পাদনে বাধা দেয়। এটি সাধারণত "হত্যা" প্রক্রিয়া হিসাবে পরিচিত। হুডের নীচে, এর অর্থ প্রক্রিয়াটি সঠিকভাবে সম্পাদন শেষ করতে এবং কোনও ব্যবহৃত সম্পদকে সুশৃঙ্খলভাবে মুক্তি দেওয়ার জন্য একটি সংকেত প্রেরণ করা।
একটি প্রক্রিয়া হ্রাস করতে, কমান্ড কমান্ডটি নিম্নলিখিতভাবে ব্যবহার করুন:
# kill PID
বিকল্পভাবে, আপনি প্রদত্ত মালিক (-u)
, বা একটি গ্রুপের মালিক (-G)
, বা এমনকি পিপিআইডি রয়েছে এমন সমস্ত প্রক্রিয়াগুলি শেষ করতে পিকিল ব্যবহার করতে পারেন সাধারণ (-পি)
এ। এই বিকল্পগুলি সংখ্যার উপস্থাপনা বা সনাক্তকারী হিসাবে প্রকৃত নাম দ্বারা অনুসরণ করা যেতে পারে:
# pkill [options] identifier
উদাহরণ স্বরূপ,
# pkill -G 1000
GID = 1000 এর সাথে গোষ্ঠী মালিকানার সমস্ত প্রক্রিয়া মেরে ফেলবে।
এবং,
# pkill -P 4993
যার পিপিআইডি 4993, সমস্ত প্রক্রিয়া মেরে ফেলবে।
পিকিল চালানোর আগে, প্রথমে pgrep দিয়ে ফলাফলগুলি পরীক্ষা করা ভাল ধারণা, সম্ভবত -l
বিকল্পটি ব্যবহার করে প্রক্রিয়াগুলির নাম তালিকাভুক্ত করা উচিত। এটি একই বিকল্পগুলি গ্রহণ করে তবে কেবলমাত্র প্রক্রিয়াগুলির পিআইডি (কোনও পরবর্তী পদক্ষেপ না নিয়ে) ফেরত দেয় যা পিকেল ব্যবহার করা হলে নিহত হবে।
# pgrep -l -u gacanepa
এটি পরবর্তী ছবিতে চিত্রিত করা হয়েছে:
সারসংক্ষেপ
এই নিবন্ধে আমরা একটি লিনাক্স সিস্টেমে সমালোচনামূলক হার্ডওয়্যার এবং সফ্টওয়্যার উপাদানগুলির অখণ্ডতা এবং উপলব্ধতা যাচাই করার জন্য সংস্থানসমূহের ব্যবহার নিরীক্ষণের কয়েকটি উপায় অনুসন্ধান করেছি।
আমরা অস্বাভাবিক পরিস্থিতিতে কীভাবে উপযুক্ত ব্যবস্থা গ্রহণ করতে হবে (কোনও প্রদত্ত প্রক্রিয়াটির কার্যকরকরণের অগ্রাধিকারটি সামঞ্জস্য করে বা এটি সমাপ্ত করে) কীভাবে শিখতে পারি।
আমরা আশা করি এই টিউটোরিয়ালে বর্ণিত ধারণাগুলি সহায়ক হয়েছে been আপনার যদি কোনও প্রশ্ন বা মন্তব্য থাকে তবে নীচে যোগাযোগের ফর্মটি ব্যবহার করে আমাদের সাথে নির্দ্বিধায় যোগাযোগ করুন।