Ein Dateisystem kann belegt bleiben, weil ein Prozess eine Datei geöffnet hat, eine Datei in den Speicher abbildet oder ein Verzeichnis als aktuelles Arbeitsverzeichnis verwendet. lsof und fuser helfen, diese Beziehungen zu ermitteln. Untersuche sie zuerst; Prozesse zu stoppen ist eine getrennte Entscheidung mit betrieblichen Folgen.
Prozessauslastung · Lektion 2
lsof und fuser
Lerne, Prozesse zu ermitteln, die Dateien, Verzeichnisse, Einhängepunkte und Netzwerk-Sockets verwenden.
Offene Dateien mit lsof auflisten
lsof bedeutet „list open files“. Frage einen Pfad ab, um passende Datensätze offener Dateien zu sehen:
$ sudo lsof -- /mnt/usb
Für einen vollständigen Verzeichnisbaum auf demselben Dateisystem unterstützen Implementierungen üblicherweise +D; rekursive Scans können jedoch aufwendig sein:
$ sudo lsof +D /mnt/usb
Nützliche Spalten sind COMMAND, PID, USER, der Dateideskriptor (FD), Typ, Gerät und NAME. Ein Datensatz mit cwd im Feld FD zeigt an, dass der Prozess das Verzeichnis als sein aktuelles Arbeitsverzeichnis verwendet. Die Ausgabe ohne erhöhte Rechte kann für Prozesse anderer Benutzer unvollständig sein.
Was zeigt cwd in der Spalte FD an?
Benutzer mit fuser ermitteln
fuser meldet Prozess-IDs, die eine angegebene Datei oder ein Dateisystem verwenden. Die ausführliche Ausgabe ergänzt Benutzer, Zugriffsarten und Befehlsnamen:
$ sudo fuser -v /mnt/usb
Verwende die von fuser aus procps unterstützte Mount-Option, um das Argument als eingehängtes Dateisystem zu behandeln und Prozesse zu finden, die darin enthaltene Dateien verwenden:
$ sudo fuser -vm /mnt/usb
Überprüfe mit Werkzeugen wie findmnt --target /mnt/usb, dass der Pfad der beabsichtigte Einhängepunkt ist. Bind-Mounts, Namensräume, Berechtigungen und Wettlaufsituationen können beeinflussen, was eine einzelne Abfrage zeigt.
Warum solltest du während der Untersuchung fuser -v statt einfachem fuser verwenden?
Mit einem belegten Dateisystem umgehen
Arbeite in einer überlegten Reihenfolge, statt sofort jede passende PID zu beenden:
- Bestätige Host, Pfad, Mount-Quelle und beabsichtigte Wartung.
- Ermittle Prozesse, wenn möglich, mit beiden Werkzeugen.
- Stelle fest, ob jeder Prozess gestoppt, aus dem Verzeichnis verschoben oder bis zum Abschluss weiterlaufen kann.
- Stoppe ihn nach Möglichkeit über seinen Dienstmanager oder seine Anwendungsschnittstelle.
- Frage erneut ab, hänge dann aus und überprüfe das Ergebnis.
fuser -k sendet ein Signal an passende Prozesse. Bei üblichen procps-Implementierungen ist das Standardsignal SIGKILL, sodass kein geordnetes Herunterfahren stattfindet. Falls eine ausdrücklich genehmigte Beendigung nötig ist, wähle ein geeignetes Signal, überprüfe PID und Eigentümer und berücksichtige, dass sich die Prozessmenge zwischen Untersuchung und Eingriff ändern kann.
Warum ist fuser -k /mnt/usb ein schlechter erster Schritt bei der Fehlersuche?
Das Werkzeug auswählen
Verwende lsof, wenn du detaillierte Datensätze offener Dateien, Deskriptoren oder Socketinformationen benötigst. Verwende fuser für eine pfadorientierte Ansicht passender PIDs und Zugriffsarten. Keines der Ergebnisse sagt für sich allein, ob ein Prozess sicher beendet werden kann.
Verwende für Netzwerk-Sockets mit fuser einen ausdrücklichen Protokollnamensraum oder ein auf Sockets spezialisiertes Werkzeug wie ss:
$ sudo fuser -v 22/tcp
$ sudo ss -lntp
Welches Werkzeug eignet sich für eine detaillierte Liste offener Dateideskriptoren und der zugehörigen Prozesse?
Lektion abgeschlossen
Sie haben lsof und fuser abgeschlossen
Du kannst Datei- und Dateisystemnutzung nun untersuchen, ohne das Beenden als Standardreaktion zu behandeln.
Verwende
lsoffür detaillierte Datensätze offener Dateien.Verwende
fuserfür pfadorientierte PID- und Zugriffsinformationen.Bestätige den Einhängepunkt und berücksichtige Berechtigungen sowie Wettlaufsituationen.
Koordiniere ein geordnetes Stoppen, bevor du ein Signal erwägst.
Frage erneut ab und überprüfe das Aushängen oder das Ergebnis des Dienstes.
Lernfortschritt speichern
Erstellen Sie ein kostenloses Konto, um diese Lektion zu speichern und auf jedem Gerät weiterzulernen.
Kostenloses Konto erstellen