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 eines Volumes, das sich nicht auswerfen lässt, und der Suche nach dem Verursacher mit lsof.
Der Finder sagt Ihnen, dass das Laufwerk verwendet wird. Er sagt Ihnen aber nicht, was es verwendet oder was Sie dagegen tun können. Das Terminal kann beides.
Kurze Antwort: Führen Sie
diskutil eject /Volumes/YourDriveNameaus, um ein Laufwerk über das Terminal auszuwerfen. Schlägt das fehl, verwenden Siesudo lsof /Volumes/YourDriveName, um zu sehen, was das Auswerfen blockiert,kill <PID>, um den störenden Prozess zu beenden, und werfen dann erneut aus. Als letztes Mittel erzwingtdiskutil unmountDisk force /dev/diskNdas Aushängen des Laufwerks, aber tun Sie das nur, wenn nichts aktiv schreibt.
Wenn Sie sich auf der Kommandozeile wohlfühlen, ist das Terminal die mächtigste Methode, um hartnäckige Laufwerksauswürfe unter macOS zu bewältigen. Und falls Sie sich noch nicht damit wohlfühlen, sind diese Befehle ein guter Einstieg.
Grundlegendes Auswerfen mit diskutil eject
Der direkteste Weg, ein externes Laufwerk über das Mac-Terminal auszuwerfen:
diskutil eject /Volumes/YourDriveName
Ersetzen Sie YourDriveName durch den tatsächlichen Namen Ihres Laufwerks — genau so, wie er im Finder erscheint. Enthält der Name Leerzeichen, setzen Sie ihn in Anführungszeichen:
diskutil eject "/Volumes/My Drive"
Das bewirkt dasselbe wie ein Klick auf die Auswurftaste im Finder. Wenn es funktioniert, wird das Laufwerk sauber ausgehängt und Sie sind fertig. Schlägt es fehl, erhalten Sie eine aufschlussreichere Fehlermeldung, als der Finder sie je liefert.
Sie können auch aushängen, ohne auszuwerfen (das Laufwerk bleibt im Festplattendienstprogramm sichtbar, ist aber nicht eingehängt):
diskutil unmount /Volumes/YourDriveName
Der Unterschied ist bei Laufwerken mit mehreren Partitionen wichtig. unmount entfernt ein einzelnes Volume. eject entfernt das physische Gerät und alle seine Volumes auf einmal.
Die Kennung Ihres Laufwerks mit diskutil list finden
Bevor Sie fortgeschrittenere Befehle verwenden, benötigen Sie die Kennung Ihres Laufwerks. Listen Sie alle angeschlossenen Datenträger auf:
diskutil list
Die Ausgabe zeigt jeden Datenträger und seine Partitionen. Ihr externes Laufwerk ist so etwas wie disk4 oder disk5. Interne Laufwerke sind meist disk0 und disk1.
Für eine übersichtlichere Darstellung nur der externen Laufwerke:
diskutil list external
Sobald Sie die Datenträgerkennung kennen, können Sie auch über den /dev/-Pfad statt über den Volume-Namen auswerfen:
diskutil eject /dev/disk4
Das ist nützlich, wenn der Volume-Name ungewöhnliche Zeichen enthält oder wenn das Volume nicht eingehängt, der Datenträger aber noch angeschlossen ist.
So werfen Sie alle externen Laufwerke auf einmal aus
Wenn Sie jedes externe Laufwerk mit einem einzigen Befehl auswerfen müssen, gibt es zwei Ansätze.
Mit diskutil alle externen Datenträger finden und auswerfen:
diskutil list external | grep -o 'disk[0-9]*$' | while read disk; do diskutil eject "/dev/$disk"; done
Oder mit AppleScript aus dem Terminal, was das Verhalten des Finders nachbildet:
osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'
Der AppleScript-Ansatz wirft nur Datenträger aus, die der Finder als auswerfbar betrachtet — er überspringt Ihr Startvolume und Netzwerkvolumes, was in der Regel genau das ist, was Sie wollen.
Erzwungenes Aushängen, wenn diskutil eject fehlschlägt
Wenn ein normaler Auswurf mit einem Fehler wie „couldn’t unmount disk“ fehlschlägt, erzwingen Sie ihn:
diskutil unmount force /Volumes/YourDriveName
Oder hängen Sie alle Volumes eines bestimmten Datenträgers auf einmal aus:
diskutil unmountDisk force /dev/disk4
Erzwungenes Aushängen weist macOS an, das Volume freizugeben, unabhängig davon, was es verwendet. Das ist kontrollierter als das physische Abziehen des Laufwerks — das System schreibt weiterhin die Caches und benachrichtigt die Prozesse —, aber es wartet nicht darauf, dass die Prozesse ihre Dateien sauber schließen.
Verwenden Sie das erzwungene Aushängen, wenn Sie wissen, dass nichts Wichtiges geschrieben wird. Es ist das Kommandozeilen-Äquivalent zum erzwungenen Auswerfen im Festplattendienstprogramm. Lesen Sie unseren Leitfaden dazu, wann das erzwungene Auswerfen sicher und wann riskant ist, bevor Sie dies auf einem Laufwerk verwenden, das aktiv genutzt wurde.
Mit lsof herausfinden, was das Auswerfen blockiert
Das ist der Befehl, der das Terminal für Auswurfprobleme unverzichtbar macht:
lsof /Volumes/YourDriveName
lsof steht für „list open files“. Es zeigt jeden Prozess, der eine Datei auf diesem Volume geöffnet hat — den Prozessnamen, die Prozess-ID (PID), den Benutzer, der ihn ausführt, und welche Datei geöffnet ist. (Eine fokussierte Erläuterung der lsof-Optionen und -Muster finden Sie in unserem lsof-Befehlsleitfaden für Mac-Nutzer.)
Für vollständige Ergebnisse (einschließlich Systemprozessen) führen Sie ihn mit sudo aus:
sudo lsof /Volumes/YourDriveName
Ohne sudo sehen Sie nur Prozesse, die Ihrem Benutzerkonto gehören. Systemprozesse wie Spotlights mds oder Time Machines backupd erscheinen nicht. Mit sudo sehen Sie alles, was das Laufwerk tatsächlich geöffnet hält.
Die lsof-Ausgabe lesen
Die Ausgabe sieht ungefähr so aus:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mds 123 root 12r REG 1,8 4096 789 /Volumes/MyDrive/.Spotlight-V100/...
Finder 456 aaron 15r DIR 1,8 1024 2 /Volumes/MyDrive
Dropbox 789 aaron 8u REG 1,8 8192 345 /Volumes/MyDrive/Projects/.dropbox
Die wichtigsten Spalten:
- COMMAND: Der Prozessname — er verrät Ihnen, was das Auswerfen blockiert.
- PID: Die Prozess-ID — diese verwenden Sie, um den Prozess bei Bedarf zu beenden.
- FD: Dateideskriptor und Zugriffsmodus.
rbedeutet lesen,wbedeutet schreiben,ubedeutet lesen/schreiben. Wenn Siewoderusehen, schreibt etwas aktiv auf das Laufwerk, und ein erzwungener Auswurf ist riskant. - NAME: Die konkret aufgerufene Datei — sie verrät oft genau, warum der Prozess dort ist.
Häufige Übeltäter: mds (Spotlight-Indizierung), backupd (Time Machine), Dropbox, Google Drive, der Finder selbst. Lesen Sie unsere ausführlichen Beiträge zu Spotlight, das das Auswerfen blockiert und iCloud/Dropbox, die das Auswerfen verhindern für gezielte Lösungen.
Blockierende Prozesse beenden
Sobald Sie die PID eines blockierenden Prozesses kennen, beenden Sie ihn ordnungsgemäß:
kill 789
Dies sendet ein Signal zur ordnungsgemäßen Beendigung. Der Prozess erhält die Gelegenheit, Dateien zu schließen und aufzuräumen. Geben Sie ihm ein paar Sekunden zum Beenden und versuchen Sie dann erneut auszuwerfen.
Wenn er auf eine ordnungsgemäße Beendigung nicht reagiert:
kill -9 789
Dies erzwingt eine sofortige Beendigung. Der Prozess kann nicht mehr aufräumen. Verwenden Sie dies als letztes Mittel — besonders bei Systemprozessen.
Um alle Prozesse, die ein bestimmtes Volume verwenden, mit einem Befehl zu beenden:
sudo lsof -t /Volumes/YourDriveName | xargs kill
Die Option -t lässt lsof nur PIDs ausgeben, und xargs übergibt sie an kill. Vorsicht: Damit werden alle Prozesse beendet, die das Laufwerk verwenden, auch solche, die sich womöglich mitten in wichtiger Arbeit befinden.
Vollständiger Fehlerbehebungs-Workflow
Hier ist die komplette Abfolge für ein Laufwerk, das sich nicht auswerfen lässt:
# Schritt 1: Normales Auswerfen versuchen
diskutil eject /Volumes/YourDriveName
# Schritt 2: Falls das fehlschlägt, prüfen, was blockiert
sudo lsof /Volumes/YourDriveName
# Schritt 3: Den störenden Prozess beenden (PID durch die tatsächliche Nummer ersetzen)
kill 12345
# Schritt 4: Erneut auswerfen versuchen
diskutil eject /Volumes/YourDriveName
# Schritt 5: Falls es immer noch klemmt, Aushängen erzwingen
diskutil unmountDisk force /dev/disk4
Die meisten Probleme sind bei Schritt 3 gelöst. Den Blockierer identifizieren, beenden, sauber auswerfen.
Nützliche Diagnose-Varianten
Prüfen, ob speziell Spotlight Ihr Laufwerk belegt:
lsof /Volumes/YourDriveName | grep mds
Nur die eindeutigen Prozessnamen auflisten, die das Auswerfen blockieren (keine doppelten Zeilen):
lsof /Volumes/YourDriveName | awk '{print $1}' | sort -u
Die Festplatten-E/A in Echtzeit beobachten, um zu sehen, ob etwas aktiv schreibt:
sudo fs_usage -f diskio | grep YourDriveName
Dies läuft fortlaufend und zeigt jeden Festplattenvorgang, sobald er geschieht. Drücken Sie Control-C, um es zu stoppen. Verwenden Sie dies, wenn lsof einen Prozess anzeigt, Sie aber nicht sicher sind, ob er aktiv schreibt oder nur einen veralteten Zugriff offen hält.
Wenn das Terminal mehr Aufwand ist als es wert ist
Diese Befehle sind mächtig, und sobald Sie sie ein paar Mal verwendet haben, gehen sie in Fleisch und Blut über. Aber es gibt echte Kosten beim Kontextwechsel von Ihrer Arbeit zu einem Terminal-Fenster — Diagnosebefehle ausführen, technische Ausgaben auswerten, entscheiden, welche PID sicher beendet werden kann.
Ejecta erledigt alles oben Genannte automatisch. Es überwacht Ihre Laufwerke, identifiziert jeden blockierenden Prozess und gibt Ihnen eine Schaltfläche, um jeden mit einem Klick zu beenden. Dieselben Informationen, die Sie aus sudo lsof erhalten würden, visuell direkt in Ihrer Menüleiste aufbereitet — keine Befehle zum Merken, keine Ausgabe zum Auswerten.
Für 9,99 $ erhalten Sie ein Werkzeug, das diesen gesamten mehrstufigen Terminal-Workflow durch einen einzigen Klick ersetzt. Wenn Sie mehr als einmal im Monat mit diesem Problem kämpfen, hat es sich schon in der ersten Woche durch ersparten Frust bezahlt gemacht. Testen Sie Ejecta 7 Tage lang kostenlos — ganz ohne Terminal.
Wenn Sie nicht jedes Mal das Terminal bemühen möchten: Ejecta zeigt Ihnen genau, welcher Prozess Ihr Laufwerk blockiert – und lässt Sie ihn mit einem Klick direkt aus der Menüleiste beenden.
Jetzt kaufen — $9.99