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.
free [OPTIONEN]
# Standard-Ausgabe in Kilobytes free # Human-readable Format (empfohlen) free -h # In Megabytes free -m # In Gigabytes free -g
$ 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!) |
# 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'
| 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 |
# Ü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-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
# 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
# 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.
# 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
# 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}'
Linux nutzt ungenutzten RAM intelligent:
top oder htopdmesg | grep -i oom für Details