===== fuser - Prozesse ermitteln, die Dateien/Ports nutzen =====
**Kurzfassung:** fuser zeigt an, welche Prozesse eine Datei, ein Verzeichnis, ein Mountpoint, ein Gerät oder einen Netzwerkport verwenden, und kann diese Prozesse gezielt beenden. Ideal bei „Device or resource busy“, belegten Ports oder blockierten Unmounts.
==== Übersicht ====
fuser identifiziert Prozess-IDs (PIDs), die Ressourcen belegen, und kennzeichnet die Zugriffsart (z. B. ausführbare Datei, aktuelles Verzeichnis, geöffnet als Datei, mmap). Für Netzwerkports kann fuser pro Protokoll (TCP/UDP) anzeigen, welche Prozesse den Port nutzen.
==== Voraussetzungen ====
* Paket ''psmisc'' installiert (stellt ''fuser'' bereit)
* Shell-Zugriff auf das System
* Root-Rechte für das Signalisieren/Beenden fremder Prozesse (''-k'')
==== Syntax ====
fuser [OPTIONEN] NAME ...
# Netzwerk-Namespace explizit angeben
fuser -n tcp NAME ...
fuser -n udp NAME ...
==== Wichtige Optionen ====
-v # Ausführliche Ausgabe (Tabelle mit USER, PID, ACCESS, COMMAND)
-u # Benutzernamen neben PID anzeigen
-a # Alle übergebenen Namen anzeigen (auch wenn unbenutzt)
-s # Silent-Modus (nur Exit-Code verwenden)
-m NAME # NAME liegt auf einem gemounteten FS oder ist ein Blockdevice (alle Prozesse auf diesem Mount zeigen)
-k # Prozesse, die NAME belegen, mit einem Signal beenden (Standard: SIGKILL 9)
-k -TERM # Stattdessen freundlich beenden (SIGTERM 15)
-i # Interaktiv nachfragen, bevor ein Signal gesendet wird
-n tcp|udp # Namespace: Netzwerk (z. B. Ports); zusammen mit Portnummern verwenden
-4 | -6 # Nur IPv4 bzw. nur IPv6 berücksichtigen
Für Produktionen zuerst ''-k -TERM'' probieren und nur bei Bedarf ''-k'' (SIGKILL) einsetzen.
==== Anleitung ====
=== Prozesse finden, die eine Datei/Verzeichnis nutzen ===
# Welche Prozesse verwenden die Datei?
fuser -v /var/log/syslog
# Prozesse, die ein Verzeichnis als aktuelles Arbeitsverzeichnis halten
fuser -v /var/www
=== Mount „busy“: Belegung ermitteln und lösen ===
# Alle Prozesse auf einem Mountpoint anzeigen
fuser -vm /mnt/data
# Interaktiv alle Prozesse beenden, die den Mount belegen
sudo fuser -kim /mnt/data
=== Offene Netzwerk-Ports ermitteln ===
# Wer nutzt Port 80/TCP?
fuser -v -n tcp 80
# Alternativ explizit IPv4
fuser -v -4 -n tcp 80
# UDP-Beispiel
fuser -v -n udp 53
=== Port freigeben: Prozesse beenden ===
# Prozesse auf Port 8080/TCP freundlich beenden
sudo fuser -k -TERM -n tcp 8080
# Hart beenden, ohne Rückfrage (Achtung!)
sudo fuser -k -n tcp 8080
=== Schreibende Zugriffe erkennen ===
# Ausführliche Tabelle und ACCESS-Spalte interpretieren
fuser -v /var/lib/app/data.db
# Häufige ACCESS-Kennzeichen (je nach System):
# c = current dir (aktuelles Arbeitsverzeichnis)
# e = executable (als Programm ausgeführt)
# f = file (als Datei geöffnet)
# r = root dir (Root-Verzeichnis des Prozesses)
# m = mmap'ed (gemappt)
# F = write (schreibend geöffnet)
=== Exit-Codes für Skripte nutzen ===
# 0 = Mindestens ein Prozess gefunden, 1 = Kein Prozess, >1 = Fehler
if fuser -s /var/log/syslog; then
echo "Datei ist in Benutzung"
else
echo "Keine Nutzung gefunden"
fi
==== Hinweise ====
* Für Systemdienste kann zusätzlich ''systemctl status'' helfen, den Besitzer eines Ports/Handles zu identifizieren.
* Bei „umount: target is busy“ zuerst mit ''fuser -vm MOUNT'' prüfen; nach Möglichkeit Dienste sauber stoppen statt sofort zu killen.
* ''fuser'' ergänzt ''lsof'': ''fuser'' ist kompakt für konkrete Ressourcen, ''lsof'' ist flexibler für breite Suchen.
* Ohne Root-Rechte sind nur eigene Prozesse sichtbar bzw. nicht alle Details verfügbar.
* Vorsicht bei ''-k'': Unsaubere Beendigungen können Datenverlust verursachen.
==== Siehe auch ====
* [[sammlung:prozesse|Prozessverwaltung – Übersicht]]
* [[sammlung:process_info|Prozessinformationen (ps, pidstat)]]
* [[sammlung:signale|Signale (kill, Terminierung)]]
* [[sammlung:ss|ss – Sockets/Ports anzeigen]]
* [[sammlung:netstat|netstat – Netzwerkstatus]]
==== Quellen ====
* [[https://man7.org/linux/man-pages/man1/fuser.1.html|fuser – man7.org]]
* [[https://wiki.debian.org/Processes|Debian Wiki: Processes]]
----
{{tag>cli utilities debugging advanced}}
----