Der Befehl lsof – verständlich erklärt für Mac-Nutzer
Beherrschen Sie den Befehl lsof, um herauszufinden, welche Prozesse auf Ihrem Mac Dateien geöffnet haben. Ein Leitfaden für Entwickler und Power-User.
Ihr externes Laufwerk lässt sich nicht auswerfen. macOS zeigt Ihnen die ärgerlich vage Meldung an, dass „ein oder mehrere Programme es möglicherweise verwenden“. Welche Programme? Das verrät es nicht. Genau hier kommt lsof ins Spiel.
Der Name steht für „list open files“ (offene Dateien auflisten), und genau das tut der Befehl. Auf Unix-basierten Systemen wie macOS wird nahezu alles als Datei behandelt – auch Netzwerkverbindungen, Geräte und Festplatten-Volumes. Wenn sich ein Laufwerk nicht auswerfen lässt, sagt Ihnen lsof ganz genau, welcher Prozess es in Geiselhaft hält.
Grundlegende Syntax
Die einfachste Art, lsof bei Auswurfproblemen zu nutzen, ist:
lsof /Volumes/YourDriveName
Ersetzen Sie „YourDriveName“ durch den tatsächlichen Namen Ihres Laufwerks. Enthält der Name Leerzeichen, setzen Sie den gesamten Pfad in Anführungszeichen:
lsof "/Volumes/My Backup Drive"
Dies liefert eine Liste jedes Prozesses, der ein offenes Datei-Handle auf diesem Volume hat. Jede Zeile zeigt den Prozessnamen, seine ID (PID), den Benutzer, der ihn ausführt, sowie Informationen über die konkret aufgerufene Datei.
Die Ausgabe lesen
Eine typische lsof-Ausgabe sieht ungefähr so aus:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mds_store 1234 root 4r REG 1,12 524288 ... /Volumes/External/.Spotlight-V100/...
Finder 5678 you 3r DIR 1,12 1024 ... /Volumes/External
Die wichtigsten Spalten sind COMMAND (der Prozessname), PID (die Prozess-ID, mit der Sie ihn beenden würden) und NAME (der tatsächlich aufgerufene Dateipfad).
FD beschreibt den Öffnungsmodus: r für Lesen, w für Schreiben, u für beides. Das zeigt keine aktuelle Aktivität und beweist nicht, dass auf dem Volume keine Schreibvorgänge ausstehen.
Herausfinden, was Ihr Laufwerk blockiert
Speziell bei Auswurfproblemen müssen Sie meist nur wissen, welche Prozessnamen auftauchen. Häufige Übeltäter sind mds und mds_stores (Spotlight-Indizierung), Finder, QuickLookUIService (Erzeugung von Miniaturansichten) und fsevents (Dateisystem-Überwachung).
Wenn die Ausgabe sehr umfangreich ist und Sie sie eingrenzen möchten, können Sie grep verwenden:
lsof /Volumes/YourDriveName | grep -v "^COMMAND"
Damit wird die Kopfzeile entfernt, sodass Sie nur die tatsächlichen Prozesse sehen. Wenn Sie nur die eindeutigen Prozessnamen möchten:
lsof /Volumes/YourDriveName | awk '{print $1}' | sort -u
Nützliche Optionen
Die Option -c filtert nach dem Befehlsnamen. Wenn Sie Spotlight als Ursache vermuten:
lsof -a -c mds /Volumes/YourDriveName
Dies zeigt nur Prozesse an, deren Namen mit „mds“ beginnen.
Die Option +D listet rekursiv alle offenen Dateien in einem Verzeichnis auf:
lsof +D /Volumes/YourDriveName
Dies ist gründlicher als die Grundsyntax, kann aber auf großen Laufwerken mit vielen Dateien langsam sein.
Um zu sehen, welche Prozesse ein bestimmter Benutzer auf dem Laufwerk geöffnet hat:
lsof -a -u yourusername /Volumes/YourDriveName
lsof ohne sudo verwenden
Standardmäßig zeigt lsof nur Prozesse Ihres eigenen Benutzerkontos an. Systemprozesse, die unter root laufen (wie Spotlights mds), erscheinen erst, wenn Sie lsof mit sudo ausführen:
sudo lsof /Volumes/YourDriveName
Sie müssen Ihr Passwort eingeben. Zur Behebung von Auswurfproblemen ist sudo fast immer nötig, da Systemprozesse häufig die Blockierer sind.
Den blockierenden Prozess beenden
Sichern Sie Ihre Arbeit, lassen Sie Kopien und Backups abschließen und beenden Sie Apps normal, bevor Sie erneut auswerfen. Erzwungenes Beenden oder Auswerfen kann Datenverlust verursachen; Ejecta bestätigt keine Schreibsicherheit.
kill 1234
Ersetzen Sie 1234 durch die tatsächliche PID. Falls das nicht funktioniert, können Sie es erzwingen:
kill -9 1234
Spotlight-Prozessnamen belegen keinen reinen Lesezugriff. Beenden Sie mds oder mds_stores nicht zwangsweise, um ein Laufwerk freizugeben. Warten Sie, schließen Sie Ihre Apps und versuchen Sie, normal auszuwerfen. Ejecta erkennt diese Prozesse, bietet aber kein gewöhnliches Beenden für Systemprozesse an. Bleibt das Laufwerk blockiert, sichern Sie alles und fahren Sie den Mac vollständig herunter, bevor Sie es trennen.
Bei Programmen, die Ihnen gehören (etwa ein Terminal-Fenster mit einer Shell, die im Verzeichnis des Laufwerks steht), ist es sauberer, die Anwendung einfach normal zu schließen oder vom Laufwerk wegzunavigieren, bevor Sie den Auswurf versuchen.
Typische Szenarien
Terminal mit aktuellem Verzeichnis auf dem Laufwerk: Wenn Sie mit cd in einen Ordner auf Ihrem externen Laufwerk gewechselt haben, hält dieser Shell-Prozess das Laufwerk offen. Wechseln Sie entweder woanders hin (cd ~) oder schließen Sie das Terminal-Fenster.
Finder-Fenster: Wenn der Finder ein Fenster mit dem Laufwerk geöffnet hat – oder das Laufwerk auch nur in der Seitenleiste ausgewählt ist –, kann das den Auswurf verhindern. Schließen Sie alle Finder-Fenster, die den Inhalt des Laufwerks anzeigen.
Spotlight-Prozessnamen belegen keinen reinen Lesezugriff. Beenden Sie mds oder mds_stores nicht zwangsweise, um ein Laufwerk freizugeben. Warten Sie, schließen Sie Ihre Apps und versuchen Sie, normal auszuwerfen. Ejecta erkennt diese Prozesse, bietet aber kein gewöhnliches Beenden für Systemprozesse an. Bleibt das Laufwerk blockiert, sichern Sie alles und fahren Sie den Mac vollständig herunter, bevor Sie es trennen.
Hintergrund-Apps mit offenen Dateien: Manche Programme behalten Verweise auf zuletzt verwendete Dateien, selbst nachdem Sie die Dokumente geschlossen haben. Kreativ-Anwendungen wie Photoshop oder Videoschnittprogramme sind häufige Übeltäter. Das vollständige Beenden der App gibt die Dateien meist frei.
Jenseits der Befehlszeile
Wenn Sie sich im Terminal unwohl fühlen oder nicht jedes Mal die lsof-Ausgabe entschlüsseln möchten, wenn Sie ein Laufwerk abziehen wollen, gibt es grafische Alternativen.
Die Aktivitätsanzeige kann Ihnen die offenen Dateien eines bestimmten Prozesses anzeigen, aber Sie müssen bereits wissen, welchen Prozess Sie untersuchen wollen. Die Frage „Was verwendet dieses Laufwerk?“ beantwortet sie nicht ohne Weiteres.
Ejecta: Ejecta bietet kostenlose Laufwerksdiagnose ohne zeitlich begrenzte Testphase. Die kostenpflichtige Lizenz schaltet Beenden und Auswerfen für unterstützte Apps, Alle auswerfen und Time-Machine-Steuerung frei. Bei Systemprozessen können Warten, Autorisierung oder Herunterfahren nötig sein. Sichern Sie zuerst und lassen Sie Übertragungen abschließen.
Die Befehlszeile ist mächtig für alle, die sie bevorzugen, aber sie sollte für etwas so Einfaches wie das Abziehen eines Laufwerks nicht zwingend nötig sein.
Ejecta bietet kostenlose Laufwerksdiagnose ohne zeitlich begrenzte Testphase. Die kostenpflichtige Lizenz schaltet Beenden und Auswerfen für unterstützte Apps, Alle auswerfen und Time-Machine-Steuerung frei. Bei Systemprozessen können Warten, Autorisierung oder Herunterfahren nötig sein. Sichern Sie zuerst und lassen Sie Übertragungen abschließen.
Jetzt kaufen -Ähnliche Artikel
diskutil eject: Laufwerke über das Mac-Terminal auswerfen
Werfen Sie jedes Mac-Laufwerk über das Terminal mit diskutil aus: einschließlich des erzwungenen Aushängens …
So werfen Sie externe Laufwerke unter macOS Sequoia und Sonoma sicher aus
Apple hat in den letzten macOS-Versionen verändert, wie der Laufwerksauswurf funktioniert. Hier erfahren Sie, …
„Datenträger nicht korrekt ausgeworfen“: Ursachen und Lösung
Die Warnung „Datenträger nicht korrekt ausgeworfen“ bedeutet meist, dass Ihr Mac geschlafen hat, nicht dass …
APFS vs. exFAT: Was fürs externe Mac-Laufwerk wählen
APFS, wenn das Laufwerk nur am Mac läuft, exFAT, sobald Windows dazukommt. Unterschiede bei Time Machine, …