लिनक्स कमांड का उपयोग करके मेमोरी (RAM का उपयोग) कैसे प्राप्त करें?


30

मैं लिनक्स कमांड्स का उपयोग करते हुए उपयोग की गई मेमोरी (RAM) को प्रतिशत में पुनः प्राप्त करने का प्रयास कर रहा हूं। मेरी cpanel मैमोरी यूज्ड दिखाती है जिसे मुझे एक विशेष वेबपेज पर प्रदर्शित करना है।

मंचों से, मुझे पता चला कि निम्नलिखित में से सही मेमोरी मिल सकती है:

free -m

परिणाम:

-/+ buffers/cache:        492       1555

- / + बफ़र्स / कैश: सही मेमोरी उपयोग होता है। मुझे नहीं पता कि इस जानकारी को कैसे पार्स करना है या यदि प्रतिशत में उपयोग की जाने वाली मेमोरी प्राप्त करने के लिए कोई अलग कमांड है।


3
यह पहले से ही यहाँ पर जवाब दिया गया था! stackoverflow.com/questions/10585978/… उदाहरण: free | grep Mem | awk '{print $4/$2 * 100.0}'
szboardstretcher 20

@ szboardstretcher मुझे यह पसंद है:$ free | awk '/Mem/{printf("used: %.2f%"), $3/$2*100} /buffers\/cache/{printf(", buffers: %.2f%"), $4/($3+$4)*100} /Swap/{printf(", swap: %.2f%"), $3/$2*100}'
Simply_Me

यह जानने के बिना कि आपको इसके लिए नंबर की क्या आवश्यकता है, आपको यह बताना कठिन है कि आपको किस नंबर का उपयोग करना चाहिए। हालाँकि कई मामलों में उनमें से कोई भी संख्या बहुत ही भोली है और उसे प्रवृत्ति और संदर्भ जानकारी की आवश्यकता होती है।
Eckes

जवाबों:


33

यहाँ नि: शुल्क से नमूना आउटपुट है:

% free
             total       used       free     shared    buffers     cached
Mem:      24683904   20746840    3937064     254920    1072508   13894892
-/+ buffers/cache:    5779440   18904464
Swap:      4194236        136    4194100

संख्याओं की पहली पंक्ति ( Mem:) सूचीबद्ध करती है

  • total स्मृति
  • used स्मृति
  • free स्मृति
  • का उपयोग shared
  • का उपयोग buffers
  • फाइलसिस्टम कैश का उपयोग करें ( cached)

इस पंक्ति used में बफ़र्स और कैश शामिल हैं और यह प्रभाव मुक्त है। यह आपकी "सच्ची" मुक्त मेमोरी नहीं है क्योंकि आवंटन अनुरोधों को पूरा करने के लिए सिस्टम को कैश डंप करना होगा।

अगली पंक्ति ( -/+ buffers/cache:) हमें वास्तविक उपयोग और मुफ्त मेमोरी देती है जैसे कि कोई बफ़र या कैश नहीं थे।

अंतिम पंक्ति ( Swap) स्वैप मेमोरी का उपयोग करती है। स्वैप के लिए कोई बफर या कैश नहीं है क्योंकि इन चीजों को एक भौतिक डिस्क पर रखने का कोई मतलब नहीं होगा।

उपयोग की गई मेमोरी (माइनस बफ़र्स और कैश) को आउटपुट करने के लिए आप एक कमांड का उपयोग कर सकते हैं जैसे:

% free | awk 'FNR == 3 {print $3/($3+$4)*100}'
23.8521

यह तीसरी पंक्ति को पकड़ता है और प्रयुक्त / कुल * 100 को विभाजित करता है।

और मुफ्त मेमोरी के लिए:

% free | awk 'FNR == 3 {print $4/($3+$4)*100}' 
76.0657

1
क्या "- / + बफ़र्स / कैश: 5779440 18904464" सही रैम उपयोग / सर्वर की स्थिति?
कोडेलॉग

2
कड़ाई से बोलना, नहीं, लेकिन व्यावहारिक रूप से बोलना, हाँ। वास्तविक मेमोरी उपयोग 2 पंक्ति है (उपयोग किया गया: 20746840) लेकिन उस मेमोरी उपयोग का एक हिस्सा बफ़र्स और कैश है जो आपके सिस्टम पर प्रतिक्रिया समय को गति देने के लिए हैं। तीसरी पंक्ति (प्रयुक्त: 5779440) आपको वास्तव में कार्यक्रमों द्वारा उपयोग की जाने वाली स्मृति की मात्रा प्रदान करती है और यह मेमोरी मेमोरी है जो यह निर्धारित करती है कि आपके कार्यक्रम कितने अधिक आवंटित कर सकते हैं। यदि आपका लक्ष्य इस बात की स्वतंत्र / उपयोग की गई स्मृति प्राप्त करना है कि वास्तव में कौन से कार्यक्रम उपयोग कर रहे हैं और आप वास्तव में क्या आवंटित कर सकते हैं, तो हाँ, पंक्ति 3 आपके लिए सही है।
केसी

1
ध्यान दें कि हाल के संस्करणों के साथ free, -/+ buffers/cacheपूरी तरह से जानबूझकर छोड़ दिया गया है, और usedकॉलम में दिखाए गए मूल्य अब बफ़र्स और कैश को डिफ़ॉल्ट रूप से बाहर कर देते हैं। यहाँ देखें: Bugzilla.redhat.com/show_bug.cgi?id=1158828
jdgregson

10

मैं freeकमांड पर जानकारी को पार्स करने के तरीके के बारे में उल्लेख करने जा रहा हूं । प्रतिशत ज्ञात करने के लिए, आप अन्य 2 उत्तरों में सुझाए अनुसार उपयोग कर सकते हैं।

यह यहाँ स्पष्ट रूप से समझाया गया है । मैं अपने सिस्टम में जो कुछ भी है उससे समझाने की कोशिश करूंगा।

free -m
             total       used       free     shared    buffers     cached
Mem:          7869       4402       3466          0        208       3497
-/+ buffers/cache:        696       7173
Swap:         3999        216       3783

अब, देखते हैं कि विभिन्न संख्याएँ वास्तव में क्या दर्शाती हैं।

पंक्ति 1

  • 7869 मेरी मशीन के लिए उपलब्ध स्मृति / भौतिक रैम को इंगित करता है।
  • 4402 मेरे सिस्टम द्वारा उपयोग की जाने वाली मेमोरी / रैम को इंगित करता है।
  • 3466 कुल रैम मुक्त और नई प्रक्रिया को चलाने के लिए उपलब्ध होने का संकेत देता है।
  • 0 साझा की गई स्मृति को इंगित करता है। यह कॉलम अप्रचलित है और भविष्य में मुफ्त में रिलीज़ किया जा सकता है।
  • 208 लिनक्स में विभिन्न अनुप्रयोगों द्वारा कुल रैम को इंगित करता है।
  • 3497 कुल रैम का उपयोग भविष्य के उद्देश्य के लिए डेटा के कैशिंग के लिए करता है।

लाइन 2

-/+ buffers/cache:        696       7173

Line2 में प्राप्त मान 696 और 7173 की गणना कैसे करें?

कुल इस्तेमाल किया ( 4402 ) - कुल बफर रैम ( 208 ) - कैशिंग के लिए कुल रैम ( 3497 ) का गठन करना चाहिए वास्तविक इस्तेमाल किया रैम प्रणाली में। यह मुझे 697 लौटाता है जो दूसरी पंक्ति में वास्तविक रूप से प्रयुक्त रैम आउटपुट है।

अब, टोटल अवेलेबल ( Total9६ ९) - एक्चुअल यूज्ड ( ) आपको फ्री मेमोरी देनी चाहिए जो इस मामले में 3१ in३ है जो दूसरी लाइन में आउटपुट के रूप में भी मिलती है।


6

हालाँकि @szboardstretcher द्वारा बताया गया एक डुप्लिकेट , समाधान से मेरी प्राथमिकता (मूल प्रश्न में) नीचे एक है, विशेष रूप से जब से आप एक वेबपेज पर पार्स करना चाहते हैं।

$ free | awk '/Mem/{printf("used: %.2f%"), $3/$2*100} /buffers\/cache/{printf(", buffers: %.2f%"), $4/($3+$4)*100} /Swap/{printf(", swap: %.2f%"), $3/$2*100}'

आउटपुट:

used: 82.68%, buffers: 42.81%, swap: 1.27%

4
FYI करें मैं इस का उपयोग कर निम्नलिखित मिलता हैused: 96.00%, buffers: 26.53%awk: (FILENAME=- FNR=4) fatal: division by zero attempted
केलीफज

पूर्ण कमांड का उपयोग क्या है? मैंने इसे सेंटो में चेक किया।
बस_मई

प्रारूपण के लिए क्षमा करें, लेकिन यहाँ आप जाते हैं$ cat /etc/issue CentOS release 6.7 (Final) $ free | awk '/Mem/{printf("used: %.2f%"), $3/$2*100} /buffers\/cache/{printf(", buffers: %.2f%"), $4/($3+$4)*100} /Swap/{printf(", swap: %.2f%"), $3/$2*100}' used: 12.91%, buffers: 96.24%awk: (FILENAME=- FNR=4) fatal: division by zero attempted $ free total used free shared buffers cached Mem: 15429704 1991416 13438288 164 151556 1259584 -/+ buffers/cache: 580276 14849428 Swap: 0 0 0
केलीफज

Awk (mawk) के कुछ संस्करणों के लिए, इसे प्रिंट करने के लिए प्रतिशत चिह्न को दोगुना करने की आवश्यकता है, अन्यथा awk एक त्रुटि फेंकता है, जैसे: प्रिंटफ ("उपयोग किया:% .0f %%"), $ 3 / $ 2 * 100 के साथ काम करता है। mawk और gawk दोनों।
14:20 पर JAN Lalinský

2
free | awk '/Mem/{printf("used: %.2f%"), $3/$2*100} /buffers\/cache/{printf(", buffers: %.2f%"), $4/($3+$4)*100} /Swap/{printf(", swap: %.2f%\n"), $3/$2*100}' 

स्वैप नंबर के बाद एक नई लाइन जोड़ता है


1

CentOS 7 के लिए आप कोशिश कर सकते हैं

cat /proc/meminfo 

प्रक्रियाओं द्वारा मेमोरी का वास्तविक उपयोग देखना।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.