लिनक्स पर प्रति प्रक्रिया मेमोरी उपयोग की जांच कैसे करें

How Check Memory Usage Per Process Linux



आजकल एक कंप्यूटर एक साथ कई प्रोग्राम चला सकता है। सीपीयू को इन सभी कार्यक्रमों को संभालने में कोई समस्या नहीं है क्योंकि सीपीयू में मल्टी-टास्किंग को संभालने के लिए कई कोर होते हैं।

इनमें से प्रत्येक प्रोग्राम एक या अधिक प्रक्रियाओं के रूप में चलता है। प्रत्येक प्रक्रिया अपने लिए कुछ मात्रा में RAM या मेमोरी आवंटित करती है। प्रक्रिया के सही ढंग से कार्य करने के लिए यह आवश्यक है। यदि कोई प्रक्रिया पर्याप्त रैम या मेमोरी आवंटित करने में विफल रहती है, तो प्रक्रिया नहीं बनाई जा सकती है और प्रोग्राम शुरू नहीं हो पाएगा।







तो, आप अपने कंप्यूटर पर जो मूल कार्य करते हैं, वह यह जांचना है कि प्रत्येक प्रक्रिया कितनी मेमोरी या रैम (रैंडम एक्सेस मेमोरी) का उपयोग कर रही है। क्योंकि, आपके कंप्यूटर की RAM या मेमोरी सीमित होती है।



एक मामले की कल्पना करें, जहां आप कुछ प्रोग्राम चलाना चाहते हैं और यह विफल हो जाता है क्योंकि आपके पास पर्याप्त मेमोरी नहीं है। हो सकता है कि कुछ प्रक्रियाएँ बहुत अधिक मेमोरी का उपयोग कर रही हों जिनकी आपको अभी आवश्यकता नहीं है। रैम या मेमोरी को खाली करने के लिए आप इन प्रक्रियाओं को बंद या बंद कर सकते हैं, ताकि आप अपने महत्वपूर्ण कार्यक्रम शुरू कर सकें।



इस लेख में, मैं आपको दिखाऊंगा कि आपकी लिनक्स मशीन पर चलने वाली प्रत्येक प्रक्रिया के मेमोरी उपयोग की जांच कैसे करें। मैं इस लेख में सभी प्रदर्शनों के लिए डेबियन 9 स्ट्रेच का उपयोग करूंगा। लेकिन इसे किसी भी आधुनिक लिनक्स वितरण पर काम करना चाहिए। आएँ शुरू करें।





आप का उपयोग कर सकते हैं पी.एस. लिनक्स पर सभी प्रक्रियाओं के मेमोरी उपयोग की जांच करने के लिए आदेश। इस प्रक्रिया में एक समस्या है। पी.एस. वास्तव में आपको यह नहीं दिखाता है कि KB या MB प्रारूप में एक प्रक्रिया कितनी मेमोरी का उपयोग करती है, लेकिन यह आपको दिखाएगा कि प्रतिशत में कितनी मेमोरी का उपयोग किया जा रहा है।

आप निम्न कमांड के साथ अपने लिनक्स ऑपरेटिंग सिस्टम पर चल रही सभी प्रक्रिया के मेमोरी उपयोग (प्रतिशत में) की जांच कर सकते हैं:



$पी.एस. -यापीआईडी, उपयोगकर्ता,%मेमे,आदेशकुल्हाड़ी| तरह -बी -k3 -आर

जैसा कि आप देख सकते हैं, प्रतिशत में मेमोरी उपयोग के साथ सभी प्रक्रियाओं को अवरोही क्रम में सूचीबद्ध किया गया है (अधिकांश मेमोरी का उपयोग करने वाली प्रक्रियाएं पहले सूचीबद्ध हैं)।

pmap के साथ प्रक्रियाओं के मेमोरी उपयोग की जाँच करना:

आप मानव पठनीय प्रारूप (केबी या किलोबाइट्स में) में एक प्रक्रिया या प्रक्रियाओं के एक सेट की स्मृति की जांच कर सकते हैं पीएमएपी आदेश। आपको केवल उन प्रक्रियाओं का PID चाहिए, जिनका आप मेमोरी उपयोग जांचना चाहते हैं।

मान लीजिए, आप जांचना चाहते हैं कि पीआईडी ​​​​917 के साथ प्रक्रिया कितनी मेमोरी का उपयोग कर रही है। ऐसा करने के लिए, भागो पीएमएपी निम्नलिखित नुसार:

$सुडोपीएमएपी917

जैसा कि आप देख सकते हैं, 917 प्रक्रिया द्वारा उपयोग की जाने वाली कुल मेमोरी 516104 KB या किलोबाइट है। आप यह भी देख सकते हैं कि पीआईडी ​​​​917 के साथ प्रक्रिया को चलाने के लिए पुस्तकालयों और अन्य फाइलों की कितनी मेमोरी का उपयोग किया जा रहा है।

यदि आप इस बात की परवाह नहीं करते हैं कि लाइब्रेरी या अन्य आश्रित फाइलें कितनी मेमोरी का उपयोग कर रही हैं, तो रन करें पीएमएपी निम्नलिखित नुसार:

$सुडोपीएमएपी917 | पूंछ -एन 1

जैसा कि आप देख सकते हैं, पीआईडी ​​​​917 के साथ प्रक्रिया द्वारा उपयोग की जाने वाली कुल मेमोरी केवल स्क्रीन पर मुद्रित होती है।

आप चाहें तो इसे और भी फिल्टर कर सकते हैं awk और केवल KB या किलोबाइट में आकार प्राप्त करें। ऐसा करने के लिए, भागो पीएमएपी निम्नलिखित नुसार:

$सुडोपीएमएपी917 | पूंछ -एन 1 | awk '/ [0-9] कश्मीर / {प्रिंट $ 2}'

जैसा कि आप देख सकते हैं, केवल KB या किलोबाइट में स्मृति उपयोग मुद्रित होता है।

अब आप यह भी सूचीबद्ध कर सकते हैं कि कई प्रक्रियाओं द्वारा उनके पीआईडी ​​का उपयोग करके कितनी मेमोरी का उपयोग किया जाता है पीएमएपी निम्नलिखित नुसार:

$सुडोपीएमएपी917 531 | पकड़कुल

ध्यान दें: यहां 917 और 531 प्रोसेस आईडी या पीआईडी ​​हैं। आप इस तरह से जितने चाहें उतने PID लगा सकते हैं।

किलोबाइट में सभी प्रक्रियाओं के मेमोरी उपयोग को सूचीबद्ध करने के लिए pmap का उपयोग करना:

इस खंड में, मैं आपको दिखाऊंगा कि मानव पठनीय प्रारूप (किलोबाइट्स या केबी) में आपके लिनक्स ऑपरेटिंग सिस्टम पर चल रही सभी प्रक्रियाओं के मेमोरी उपयोग को सूचीबद्ध करने के लिए अपनी खुद की शेल स्क्रिप्ट कैसे लिखनी है।

सबसे पहले एक नई फाइल बनाएं सिस्मॉन निम्न आदेश के साथ आपकी वर्तमान कार्यशील निर्देशिका में:

$स्पर्शसिस्मॉन

अब फ़ाइल को निम्न आदेश के साथ निष्पादन योग्य बनाएं:

$चामोद+x सिसमोन

सिस्मॉन शेल स्क्रिप्ट है जो सभी चल रही प्रक्रियाओं को प्रदर्शित करेगी पीआईडी , मालिक , याद (केबी में अवरोही क्रम में) और COMMAND . चलो शुरू करते हैं।

को खोलो सिस्मॉन आपके पसंदीदा टेक्स्ट एडिटर के साथ स्क्रिप्ट, मैं उपयोग करने जा रहा हूँ कैट .

अब, जो पहला आदेश मैं चलाने जा रहा हूं, वह मुझे देगा पीआईडी , मालिक तथा COMMAND सभी चल रही प्रक्रियाओं को कोलन (:) प्रतीक द्वारा अलग किया जाता है और इसे में संग्रहीत किया जाता है रॉविन चर। फिर आउटपुट के माध्यम से लूप करें और इसे स्क्रीन पर प्रिंट करें।

जैसा कि आप देख सकते हैं, मुझे सही आउटपुट मिल रहा है।

अब प्रत्येक पंक्ति को संसाधित करने का समय है, कोलन सीमांकित जानकारी को अलग-अलग चर में संग्रहीत करें। मैंने लाइन 7, 8 और 9 पर यही किया।

जैसा कि आप देख सकते हैं, मैं प्रिंट कर सकता हूँ पीआईडी , मालिक तथा COMMAND अब मेरे अपने प्रारूप में।

अब प्रत्येक पीआईडी ​​​​के मेमोरी उपयोग को लाने का समय आ गया है। लाइन 10 बस यही करती है।

जैसा कि आप देख सकते हैं, सब कुछ पूरी तरह से काम कर रहा है। अब मैं प्रत्येक प्रक्रिया के मेमोरी उपयोग को किलोबाइट्स (KB) में भी प्रिंट कर सकता हूं।

अब बस इतना करना बाकी है कि अच्छा दिखने के लिए आउटपुट को फॉर्मेट करें। मैं टेबल प्रारूप पसंद करता हूं। पंक्ति 5 तालिका के प्रत्येक स्तंभ के शीर्ष लेख को प्रिंट करती है।

अंत में, मैंने छापा पीआईडी , मालिक , याद (केबी में) और COMMAND पंक्ति 14 का उपयोग करते हुए एक सारणीबद्ध प्रारूप में प्रत्येक प्रक्रिया की।

जैसा कि आप देख सकते हैं, यह थोड़े अच्छा काम कर रहा है। हालाँकि, थोड़ी समस्या है, मेमोरी उपयोग द्वारा प्रक्रियाओं को अवरोही क्रम में सही ढंग से क्रमबद्ध नहीं किया गया है।

इसे ठीक करने के लिए, मैंने हटा दिया सॉर्ट-बीएनआर-के3 लाइन 3 से और शेल फंक्शन में सब कुछ लपेट दिया sysmon_main () . फिर छँटाई का काम छोड़ दिया तरह आदेश।

अंतिम शेल स्क्रिप्ट कुछ इस तरह दिखती है:

जैसा कि आप देख सकते हैं, यह बहुत अच्छा काम करता है।

अब आप इसे कहीं भी ले जा सकते हैं जैसे /usr/बिन और इसे अन्य आदेशों की तरह ही निष्पादित करें:

$सुडो एमवी -वीसिस्मॉन/usr/पूर्वाह्न

निष्पादित सिस्मॉन :

इस लेख को पढ़ने के लिए धन्यवाद।