2010-03-14 11 views
35

मैं अपने लिनक्स पीसी के बाइट्स में कुल भौतिक स्मृति कैसे प्राप्त कर सकता हूं?बैश में कुल भौतिक मेमोरी को एक चर में निर्दिष्ट करने के लिए कैसे करें?

मुझे इसे एक बैश स्क्रिप्ट चर में असाइन करने की आवश्यकता है।

+0

यह प्रश्न बहुत कम समझ में आता है। कृपया इसे अधिक विशिष्ट होने के लिए फिर से लिखने का प्रयास करें। – Gabe

+0

मैंने इसे अभी लिखा है। मेरे लिए यह बहुत विशिष्ट है, मुझे अपने पीसी की कुल भौतिक मेमोरी (रैम) प्राप्त करना है और असाइन करना है यह मेरी बैश स्क्रिप्ट में एक चर के लिए है। – Neuquino

उत्तर

56
grep MemTotal /proc/meminfo | awk '{print $2}' 

लौटे संख्या KB

में है
+6

ऐसा लगता है कि आपने अपने प्रश्न का उत्तर दिया है। फिर भी, नौकरी करने के लिए एक अजीब कमांड का उपयोग करें। 'awk'/MemTotal/{print $ 2} '/ proc/meminfo' – ghostdog74

+6

किसी भिन्न आधार (उदा। जीबी) में रूपांतरण शामिल करने के लिए आप' grep memTotal/proc/meminfo का उपयोग कर सकते हैं। अजीब '{प्रिंट $ 2}' | xargs -I {} गूंज "स्केल = 4; {}/1024^2" | बीसी' – turtlemonvh

8

कैसे के बारे में

var=$(free | awk '/^Mem:/{print $2}') 
+1

वैरिएबल असाइन करते समय "=" चिह्न के बीच कोई रिक्त स्थान नहीं है। जहां भी संभव हो ''() 'वाक्यविन्यास का उपयोग करें। – ghostdog74

+0

@ ghostdog74: धन्यवाद (पोस्ट फिक्स्ड) – kiwicptn

+0

grep _and_ awk? –

18
phymem=$(awk -F":" '$1~/MemTotal/{print $2}' /proc/meminfo) 

या का उपयोग कर मुक्त

phymem=$(free|awk '/^Mem:/{print $2}') 

या का उपयोग कर खोल

#!/bin/bash 

while IFS=":" read -r a b 
do 
    case "$a" in 
    MemTotal*) phymem="$b" 
    esac 
done <"/proc/meminfo" 
echo $phymem 
+4

मुझे यह पसंद है क्योंकि आप इसे अलग-अलग इकाइयों में प्राप्त करने के लिए 'मुक्त' करने के लिए '-m',' -g', आदि में पास कर सकते हैं :) –

+0

बहुत अच्छा सारांश उत्तर, धन्यवाद। इसके अलावा मैं इकाइयों को पट्टी करने के लिए 'बी-सी' पढ़ने के दौरान उचित रेखा बदलूंगा। – dess

1

मूर्खतापूर्ण इनलाइन पायथन संस्करण, जो अत्यधिक जटिल दिखता है, लेकिन वास्तव में उपयोगी है।

freemem=$(echo -e 'import re\nmatched=re.search(r"^MemTotal:\s+(\d+)",open("/proc/meminfo").read())\nprint(int(matched.groups()[0])/(1024.**2))' | python) 

यह जीबी में स्मृति देता है।

+0

मुझे लगता है कि आपके पास 're.search (r "^ MemTotal ...")' – kd88

+0

@ kd88 में एक भटक "आर" है, मुझे लगता है कि यह ठीक है। यह सिर्फ अजगर में कच्ची स्ट्रिंग के लिए संकेत है। स्पष्टीकरण के लिए रेगेक्स दस्तावेज़ों का परिचय अनुभाग देखें: https://docs.python.org/2/library/re.html – turtlemonvh

5

मैं इस धारणा के तहत इस एक के साथ आया था कि भौतिक स्मृति मुक्त के उत्पादन में पहले नंबर हो जाएगा,:,

free -m | grep -oP '\d+' | head -n 1 

यह आपको इकाई आप चाहते उत्पादन करने के लिए स्वतंत्र कॉन्फ़िगर करने के लिए (मी की अनुमति देता है -g, ...) और यह सिस्टम भाषा से स्वतंत्र है (अन्य उत्तरों मुक्त "आउटपुट में" मेम: "स्ट्रिंग पर निर्भर करते हैं जो भाषा के आधार पर बदल सकता है।

संबंधित मुद्दे