Manchmal möchte ich ein USB-Gerät mit aushängenumount /run/media/theDrive
, aber ich erhalte eine drive is busy
Fehlermeldung.
Wie finde ich heraus, welche Prozesse oder Programme auf das Gerät zugreifen?
process
open-files
unmounting
Stefan
quelle
quelle
Antworten:
Verwenden Sie
lsof | grep /media/whatever
, um herauszufinden, was die Halterung verwendet.umount -l
Ziehen Sie auch (Lazy Umount) in Betracht , um zu verhindern, dass neue Prozesse das Laufwerk verwenden, während Sie bereinigen.quelle
fuser -mv /path/to/mountpoint
ist möglicherweise eine besser lesbare Alternative, um Prozesse mithilfe eines Mointpoints herauszufinden.lsof | grep
funktioniert besser für mich.fuser -mv
scheint nur mehr als 80 verwandte Prozesse abzuspeichern. Ich verwende Mount-gebundene Verzeichnisse.umount -l
ist gefährlich . stattdessenmount -o bind
ein modusleeres verzeichnis000
oben und aufräumen überlsof +f -- /dev/device
.Die meiste Zeit, die beste Verwendung des Befehls ist lsof ( „ l i s t o Stift f iles“).
Wo
/media/usb0
befindet sich der Einhängepunkt des USB-Laufwerks oder eines anderen Dateisystems, dessen Einhängung aufgehoben werden soll?+f --
weist lsof an, das nachfolgende Argument als Mount-Punkt zu behandeln; es schafft normalerweise, aber nicht immer, von selbst, so dass eslsof /media/usb0
auch funktioniert. Hiermit werden offene Dateien (auch nicht verknüpfte), Speicherzuordnungsdateien, aktuelle Verzeichnisse und weitere unklare Verwendungen gefunden. Sie müssen den Befehl als root ausführen, um Informationen zu den Prozessen anderer Benutzer zu erhalten (und ich denke, es gibt Unices, bei denen der Befehl als root ausgeführt werdenlsof
muss).Es gibt Verwendungen, die lsof nicht finden wird; Diese sind auf Wechselmedien ungewöhnlich. Sie beinhalten:
/foo
wenn/foo/bar
es sich um einen Bereitstellungspunkt handelt./foo
wenn/foo/bar
es sich um ein gemountetes Block-Gerät oder eine durch eine Schleife gemountete reguläre Datei handelt oder wenn es sich um die Quelle eines Linux-Bind-Mounts handelt.Ein weiterer Befehl, der zur Not verwendet werden kann, ist fuser, das nur PIDs von Prozessen mit geöffneten Dateien auf dem Gerät auflistet:
quelle
Sie können
lsof
wie Peter gesagt verwenden, oder, wenn Sie sicher sind, dass Sie nur all diese Dinge töten und aushängen möchten, können Sie wahrscheinlich Folgendes tun:quelle
-M
zur Sicherheit.-M
angewendet werden soll.fuser
:-M, --ismountpoint Request will be fulfilled only if NAME specifies a mountpoint. This is an invaluable seatbelt which prevents you from killing the machine if NAME happens to not be a filesystem.
Dateien öffnen
Prozesse mit offenen Dateien sind die üblichen Schuldigen. Zeigen Sie sie an:
Die Verwendung von
/dev/<device>
anstelle von hat den Vorteil, dass/mountpoint
ein Mountpunkt nach einem verschwindetumount -l
oder von einem überlagerten Mount ausgeblendet wird.fuser
kann auch verwendet werden, aber meiner Meinung nachlsof
hat eine nützlichere Ausgabe. Diesfuser
ist jedoch hilfreich, wenn es darum geht, die Prozesse zu beenden, die Ihre Dramen verursachen, damit Sie mit Ihrem Leben weitermachen können.Dateien
<mountpoint>
auflisten (siehe Warnung oben):Beenden Sie interaktiv nur Prozesse mit Dateien, die zum Schreiben geöffnet sind:
Nach dem erneuten Einhängen von read-only (
mount -o remount,ro <mountpoint>
) ist es sicher (r), alle verbleibenden Prozesse abzubrechen:Mountpoints
Der Täter kann der Kernel selbst sein. Ein anderes Dateisystem, das auf dem Dateisystem installiert ist, das Sie versuchen,
umount
verursacht Trauer. Erkundigen Sie sich bei:Überprüfen Sie für Loopback-Mounts ( danke Stephen Kitt ) auch die Ausgabe von:
Anonyme Inodes (Linux)
Anonyme Inodes können erstellt werden durch:
open
mitO_TMPFILE
)Dies sind die am schwersten fassbaren Arten von Pokémon. Sie werden in
lsof
derTYPE
Spalte alsa_inode
(undokumentiert in derlsof
Manpage ) angezeigt .Sie werden nicht in angezeigt
lsof +f -- /dev/<device>
, daher müssen Sie:Informationen zum Beenden von Prozessen mit anonymen Inodes finden Sie unter: Auflisten der aktuellen Inotify-Überwachungen (Pfadname, PID) .
inotify
Uhren (Linux)In diesem Kommentar wird erläutert, warum
inotify
das Aufheben der Bereitstellung nicht verhindert werden sollte. In diesem Hinweis werden jedoch die Situationen beschrieben, in denen Folgendes ausgeführt wird :quelle
lsof
.Mountpoints
Abschnitt hinzugefügt .Wenn Sie GNOME verwenden, wird beim Aufheben der Bereitstellung über Nautilus eine Meldung angezeigt, die angibt, welcher Prozess das Laufwerk noch verwendet und welche Datei es verwendet.
quelle
Für (mindestens) OpenBSD:
Zum Beispiel (mit als root
doas
ausführen,fstat
da wir sonst nur unsere eigenen Prozesse sehen würden):In diesem Fall kann ich die Bereitstellung
/usr/ports
erst aufheben, wenn der Benutzer_pbuild
die Ausführung dieser beidenmake
Prozesse beendet hat.quelle
Dies ist eine häufige Gefahr: Sie müssen sich bei einem anderen Benutzer (entweder root oder einem anderen Benutzer) anmelden, in das Verzeichnis eines gemounteten Geräts wechseln und sich dann als dieser Benutzer abmelden. Wenn Sie vergessen, dass Sie in diesem Verzeichnis gelassen haben, können Sie versuchen, zu suchen, bis Sie blind sind.
lsof
Zeigt der Shell an, welches aktuelle Verzeichnis dieses Gerät verwendet. Möglicherweise möchten Sie als dieser Benutzer erneut su, um Ihr Verzeichnis zu ändern.quelle