PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : werte aus /proc/meminfo ermitteln



TSCHOUSY
14.10.09, 10:02
hallo,

ich suche eine möglichkeit die daten

MemTotal
MemFree
SwapTotal
SwapFree


mittels bash oder free auszulesen. nur bordmittel/systemsoftware, keine nachträgliche installation möglich... nun ist es natürlich möglich "einfach" die datei einzulesen, bzw die gewünschten zeilen herauszuholen, aber die datei sieht ja nicht auf jedem system gleich aus?

auf meiner debian 5 vm habe ich mehrere werte (wie NFS_Unstable oder SUnreclaim) die zb in der meminfo datei auf meinem suse 10 enterprise nicht auftauchen.. gibts es irgendwo eine beschreibung dieser datei, also dem format davon. die möglich auftretenden werte etc.

http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/en-US/Reference_Guide/s2-proc-meminfo.html
hier wird lediglich der standard beschrieben (ist ja auch redhat, ich weiss, aber trotzdem linux)

wie könnte ich das möglichst elegant lösen?

Roger Wilco
14.10.09, 10:35
total=$(free|grep ^Mem:|awk '{ print $2 }')
used=$(free|grep ^Mem:|awk '{ print $3 }')
free=$(free|grep ^Mem:|awk '{ print $4 }')
shared=$(free|grep ^Mem:|awk '{ print $5 }')
buffers=$(free|grep ^Mem:|awk '{ print $6 }')
cached=$(free|grep ^Mem:|awk '{ print $7 }')

swap_total=$(free|grep ^Swap:|awk '{ print $2 }')
swap_used=$(free|grep ^Swap:|awk '{ print $3 }')
swap_free=$(free|grep ^Swap:|awk '{ print $4 }')

TSCHOUSY
14.10.09, 11:20
wow!
mit einer komplett fertigen lösung habe ich nicht gerechnet, ich danke Dir!

damit ich auch ganz genau verstehe was ich da mache..



total=$(free|grep ^Mem:|awk '{ print $2 }')


ich rufe free auf, grep'e die Zeile wo am Anfang Mem vorkommt (den sinn des doppelpunktes verstehe ich nicht) pipe das in awk und der legt es mir in eine temporäre variable $2, und das ganze speichere bitte in total ab...

http://www.ibm.com/developerworks/linux/library/l-awk1.html

Roger Wilco
14.10.09, 11:30
Fast. Die Ausgabe von `free` wird nach der Zeichenkette "Mem:" am Zeilenanfang durchsucht und dann das 2. Feld dieser Zeile durch `awk` ausgegeben. Die Ausgabe wird in der Variablen $total gespeichert.

TSCHOUSY
14.10.09, 12:05
ah jetzt... ich hab mir die ganze zeit vorgestellt wie der die werte in der datei meminfo finden kann....

also statt cat nimmst du awk weil das zusammengehörende werte auffassen kann und dafür ein array bereitstellt. klasse. danke nochmal!