Linux-Frage zu Kommando "free -m"

OP (Firma: Q3) #7800119

Ich benötige in einer App den noch freien RAM. Wenn ich auf der Konsole schreibe "free -m" bekomme ich - rein optisch - alles was ich wissen will.

Möchte ich dieses Ergebnis programmtechnisch auswerten, muss mich mich aufwändig durch den Text parsen. Kennt jemand eine Variation von "free" (oder einem anderen Kommando, was auf dem Raspi NICHT zusätzlich installiert werden muss), das einfach nur eine Zahl für "frei" zurückgibt und sonst (möglichst) nichts?

Wenn möglich auch unbahängig von der eingestellten Sprache ... Danke!

Angehängte Dateien:

cat /proc/meminfo MemTotal: 131901212 kB MemFree: 35571576 kB MemAvailable: 40435812 kB Buffers: 455452 kB Cached: 5151988 kB SwapCached: 0 kB Active: 1430812 kB Inactive: 93672304 kB Active(anon): 1824 kB Inactive(anon): 89496820 kB Active(file): 1428988 kB Inactive(file): 4175484 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 974844 kB SwapFree: 974844 kB Dirty: 608 kB Writeback: 0 kB AnonPages: 89462908 kB Mapped: 529024 kB Shmem: 2968 kB KReclaimable: 508984 kB Slab: 733124 kB SReclaimable: 508984 kB SUnreclaim: 224140 kB KernelStack: 79872 kB PageTables: 215124 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 66925448 kB Committed_AS: 84468800 kB VmallocTotal: 34359738367 kB VmallocUsed: 95492 kB VmallocChunk: 0 kB Percpu: 36960 kB HardwareCorrupted: 0 kB AnonHugePages: 85866496 kB ShmemHugePages: 0 kB ShmemPmdMapped: 0 kB FileHugePages: 0 kB FilePmdMapped: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB Hugetlb: 0 kB DirectMap4k: 722816 kB DirectMap2M: 60094464 kB DirectMap1G: 75497472 kB

Εrnst B. schrieb:

Sollte er nicht eher MemAvailable nehmen?

Das ist eine andere Frage. Er wollte das, was bei "free -m" unter "frei" steht. Kann er haben.

Über die Hintergründe dieser Zahlen sind schon einige gestolpert, inklusive externe Entwickler und Sysadmins, denen beim Sizing von Maschinen die Düse ging, weil ihnen bei sowas wie unten zu wenig "free" erschien. Hiess dann "MEHR RAM, NOCH MEHR RAM!" :)

1
free -m
2
              total        used        free      shared  buff/cache   available
3
Mem:          64403        1419        9925           6       53058       62293
4
Swap:         33718         131       33587

Ich konnte sie dann nach einiger Überzeugungsarbeit über die Bedeutung etwas runterhandeln, aber da ist noch viel Luft nach unten.

Frank E. schrieb:

Ich benötige in einer App den noch freien RAM.

Nö. Denn was immer dir ausgegeben wird kann in der nächsten Millisekunde schon von einem anderen Prozess weggeschnappt worden sein.

Sich auf den Wert zu verlassen ist Pfusch. Der korrekte Weg ist so viel Speicher anzufordern wie man gerne hätte und dann zu testen ob man ihn bekommen hat.

OP (Firma: Q3)

Alexander S. schrieb:

Das geht auch mit awk alleine (ohne grep wie zu Beginn im mehrmals korrigierten Beitrag zuvor): $ awk '/^MemFree:/ {print $2}' /proc/meminfo

Ok, danke, funzt.

Ich nutze das, um Fehler aufzuspüren, wenn selbstgeschriebene Apps (jeweils die Einzige auf dem Raspi neben dem System) immer mehr Speicher benötigen ...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über ein Jahr alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.