Hallo, Am Sat, 11 Mar 2006, Andreas Winkelmann schrieb:
Am Saturday 11 March 2006 21:06 schrieb Al Bogner:
Ich möchte in einem Bash-Script das gesamte RAM abfragen. Gibt es dafür ein eigenes Programm bzw. wie formuliert man das besser? Mit awk habe ich es leider nicht geschafft.
grep "MemTotal" /proc/meminfo | sed 's/[ kB]//g' | cut -f2 -d":"
grep und cut brauchst Du IMHO nicht, wenn Du schon sed benutzt.
Jep.
Würde spontan an sowas denken:
$ sed -n '/^MemTotal/s/^[^0-9]*\([0-9]*\).*$/\1/p' /proc/meminfo
Ok. Hier aber (mal wieder) wie man selber draufkommt: grep "MemTotal" /proc/meminfo | sed '...' => sed -n '/MemTotal/{ ...; p; }' /proc/meminfo sed 's/[ kB]//g' | cut -f2 -d":" => sed 's/[ kB]//g;s/^[^:]*://;' ==> sed -n '/MemTotal/{s/[ kB]//g;s/^[^:]*://;p;}' /proc/meminfo was man noch zusammenfassen kann, mein Vorschlag: ==> sed -n '/MemTotal/s/^.*: *\([0-9]\+\).*$/\1/p' /proc/meminfo oder so... Einfacher ist aber tatsaechlich awk, v.a. weil man dann mit den Zahlen weiterrechnen kann ohne weitere tools anzuwerfen: ==> awk '/MemTotal/ { print $2; }' /proc/meminfo Oder, als Beispiel zum weiterrechnen, und auch gleich uebersichtlich hingeschrieben: awk ' /MemTotal/ { mem=$2; nextfile; ### explizit zur naechsten Datei (sofern vorhanden) ### springen. bei nur einer Datei wird direkt END ### aufgerufen. } END { print mem * 1024 " Bytes"; ### oder: # printf "%i Bytes =~= %i KBytes =~= %i MBytes\n", # mem*1024, mem, mem/1024; }' /proc/meminfo Falls man nicht direkt per $n Zugriff auf ein Feld hat, auch mit angepasstem Feldtrenner (-F), der bei awk sogar eine Regexp sein kann (und das kann nichtmal perl!), dann kann man immer noch mit (g)sub oder gensub das Feld in dem das gesuchte vorkommt nachbearbeiten... Beispiel (extra mit einem Feldtrenner der Nachbearbeitung erfordert): awk -F: '/MemTotal/ { print gensub("[^0-9]*", "", "g", $2); }' /proc/meminfo Zum nachvollziehen empfiehlt es sich, mal vor das print noch ein 'print $0;' und ein 'print $2;' einzufuegen. ;) HTH, -dnh -- "90% der Science-Fiction-Literatur ist schlecht. Aber eigentlich ist 90% von allem schlecht." -- Isaac Asimov