====== free - Arbeitsspeicher-Auslastung ======
free zeigt die Nutzung des Arbeitsspeichers (RAM) und des Swap-Speichers an. Es ist ein essentielles Tool zur Überwachung der Speicherauslastung und hilft dabei, Performance-Probleme und Speichermangel zu identifizieren.
===== Voraussetzungen =====
* Zugriff auf die Linux-Kommandozeile
* Grundkenntnisse in [[sammlung:bash_kommandos|Bash-Kommandos]]
===== Grundlegende Syntax =====
free [OPTIONEN]
===== Häufige Anwendungsfälle =====
==== Standard-Ausgabe ====
# Standard-Ausgabe in Kilobytes
free
# Human-readable Format (empfohlen)
free -h
# In Megabytes
free -m
# In Gigabytes
free -g
==== Ausgabe verstehen ====
$ free -h
total used free shared buff/cache available
Mem: 15Gi 4.5Gi 8.2Gi 250Mi 2.8Gi 10Gi
Swap: 2.0Gi 0B 2.0Gi
^ Spalte ^ Bedeutung ^
| total | Gesamter verfügbarer Speicher |
| used | Genutzter Speicher (ohne Buffers/Cache) |
| free | Komplett ungenutzter Speicher |
| shared | Von mehreren Prozessen genutzter Speicher (tmpfs, etc.) |
| buff/cache | Von Kernel für Buffers und Cache genutzter Speicher |
| available | Verfügbarer Speicher für neue Programme (wichtigste Spalte!) |
==== Kontinuierliche Überwachung ====
# Alle 2 Sekunden aktualisieren
free -h -s 2
# 10 Mal alle 5 Sekunden
free -h -s 5 -c 10
# Mit Zeitstempel
watch -n 2 'date && free -h'
===== Nützliche Optionen =====
^ Option ^ Bedeutung ^
| -h | Human-readable Format (KB, MB, GB) |
| -b | Bytes |
| -k | Kilobytes (Standard) |
| -m | Megabytes |
| -g | Gigabytes |
| -t | Summen-Zeile für RAM + Swap |
| -s N | Aktualisierung alle N Sekunden |
| -c N | N Wiederholungen |
| -w | Breite Ausgabe (Buffer und Cache getrennt) |
| --si | 1000er-Basis statt 1024 |
===== Die Spalten im Detail =====
==== Mem (RAM) ====
* **total**: Physischer Arbeitsspeicher insgesamt
* **used**: Von Prozessen belegter Speicher
* **free**: Komplett ungenutzter Speicher (meist gering)
* **shared**: Shared Memory (z.B. tmpfs)
* **buff/cache**: Für Buffers und Cache genutzter Speicher
* **available**: **Wichtig!** Tatsächlich verfügbarer Speicher für neue Programme
==== Swap ====
* **total**: Gesamtgröße der Swap-Partition/Datei
* **used**: Genutzter Swap (sollte idealerweise 0 oder gering sein)
* **free**: Verfügbarer Swap
===== Praktische Beispiele =====
==== Speicher-Analyse ====
# Übersicht mit Summen
free -h -t
# Breite Ansicht (Buffer und Cache getrennt)
free -hw
# Prozentuale Auslastung berechnen
free | awk 'NR==2{printf "%.2f%%\n", $3*100/$2}'
# Verfügbarer Speicher in Prozent
free | awk 'NR==2{printf "%.2f%% verfügbar\n", $7*100/$2}'
==== Swap-Nutzung prüfen ====
# Swap-Auslastung anzeigen
free -h | grep Swap
# Warnung bei Swap-Nutzung
free | awk '/Swap/{if($3>0)print "WARNUNG: Swap wird genutzt:", $3}'
# Prozesse nach Swap-Nutzung sortieren
sudo grep VmSwap /proc/*/status | awk '{sum[$1]+=$2}END{for(i in sum)print sum[i],i}' | sort -rn | head
==== Monitoring und Alarme ====
# Speicher-Alarm bei unter 10% verfügbar
free | awk 'NR==2{if($7/$2<0.1)print "KRITISCH: Nur",$7,"verfügbar!"}'
# Kontinuierliche Überwachung mit Farben
watch -n 1 -c 'free -h'
# Log erstellen
while true; do echo "$(date): $(free -h | grep Mem)" >> memory.log; sleep 300; done
===== Erweiterte Anwendungen =====
==== Cache leeren (nur für Tests!) ====
# WARNUNG: Nur für Troubleshooting!
# PageCache leeren
sudo sync && echo 1 | sudo tee /proc/sys/vm/drop_caches
# Dentries und Inodes leeren
sudo sync && echo 2 | sudo tee /proc/sys/vm/drop_caches
# Alles leeren
sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
**Achtung:** Cache leeren ist normalerweise nicht nötig! Linux nutzt freien Speicher automatisch als Cache für bessere Performance. Cache wird bei Bedarf automatisch freigegeben.
==== Vergleich mit anderen Tools ====
# Mit top/htop vergleichen
free -h && echo "---" && top -bn1 | head -5
# Mit /proc/meminfo vergleichen
free -h && echo "---" && grep -E 'MemTotal|MemFree|MemAvailable' /proc/meminfo
# Detaillierte Speicher-Info
cat /proc/meminfo
==== Skripte und Automation ====
# Einfaches Monitoring-Skript
#!/bin/bash
AVAIL=$(free -m | awk 'NR==2{print $7}')
if [ $AVAIL -lt 1000 ]; then
echo "Warnung: Nur ${AVAIL}MB verfügbar!" | mail -s "Speicher-Warnung" admin@example.com
fi
# JSON-Output für Monitoring-Systeme
free -b | awk 'NR==2{printf "{\"total\":%s,\"used\":%s,\"free\":%s,\"available\":%s}\n",$2,$3,$4,$7}'
===== Speicher-Verständnis =====
==== Warum ist "free" so niedrig? ====
Linux nutzt ungenutzten RAM intelligent:
* Freier Speicher wird für Buffers/Cache verwendet
* Cache beschleunigt Dateizugriffe enorm
* Cache wird automatisch freigegeben wenn Programme Speicher brauchen
* **Wichtig**: Schaue auf "available", nicht auf "free"!
==== Wann ist Swap-Nutzung problematisch? ====
* Geringe Swap-Nutzung (<10%) ist meist unkritisch
* Hohe Swap-Nutzung (>50%) deutet auf RAM-Mangel hin
* Häufiges Swapping (thrashing) verlangsamt System massiv
* Prüfe mit [[sammlung:vmstat|vmstat]] ob aktiv geswappt wird
===== Wichtige Hinweise =====
* **available** ist die wichtigste Spalte - sie zeigt wirklich verfügbaren Speicher
* Cache ist kein "verschwendeter" Speicher - er verbessert Performance
* Swap-Nutzung allein ist kein Problem - wichtig ist, ob aktiv geswappt wird
* Bei RAM-Mangel: Prüfe mit [[sammlung:top|top]] oder [[sammlung:htop|htop]] welche Prozesse viel Speicher nutzen
* tmpfs (z.B. /tmp) nutzt RAM und zählt zu "shared"
===== Fehlerbehebung =====
* **Zu wenig "available"**: Identifiziere speicherhungrige Prozesse mit ''top'' oder ''htop''
* **Hohe Swap-Nutzung**: Erwäge RAM-Upgrade oder reduziere laufende Dienste
* **OOM-Killer aktiv**: Prüfe ''dmesg | grep -i oom'' für Details
* **Cache zu hoch**: Normal und gewünscht! Cache wird automatisch freigegeben
===== Siehe auch =====
* [[sammlung:top|top - Prozess-Übersicht]]
* [[sammlung:htop|htop - Interaktive Prozess-Verwaltung]]
* [[sammlung:vmstat|vmstat - Virtual Memory Statistics]]
* [[sammlung:df|df - Festplatten-Auslastung]]
* [[sammlung:du|du - Verzeichnisgrößen]]
{{tag>linux kommandozeile speicher ram swap monitoring performance system}}