umount - Gerät ist beschäftigt

13

Manchmal, wenn ich ein Gerät umounten möchte, z

sudo umount /dev/loop0

Ich werde die Nachricht bekommen

umount: /mnt: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

Ich löse dieses Problem normalerweise, indem ich ein Konsolenfenster schließe (in meinem Fall xfce4-terminal) und dann umount.

Was bedeutet dieses Problem? Gibt es eine intelligentere Lösung?

xralf
quelle
2
Das passiert zum Beispiel, wenn Sie sich noch in einer Shell in dem Verzeichnis befinden, in dem das Gerät gemountet ist.
Klapaucius
Ich erinnere mich nicht, ob ich dort war, aber ich habe es versucht und du hast recht, das ist passiert.
Xralf

Antworten:

14

Dies bedeutet, dass ein Prozess ein Arbeitsverzeichnis oder ein geöffnetes Dateihandle unter dem Mountpunkt hat. Am besten beenden Sie den fehlerhaften Prozess, ändern das Arbeitsverzeichnis oder schließen das Datei-Handle, bevor Sie die Bereitstellung aufheben.

Unter Linux gibt es jedoch eine Alternative. Mit umount -lAnrufen ein "fauler" Unmount. Das Dateisystem wird weiterhin eingehängt, Sie können es jedoch nicht sehen oder verwenden, außer bei Prozessen, die es bereits verwenden. Wenn das fehlerhafte Programm beendet wird (mit welchen Mitteln auch immer), "beendet" das System die Bereitstellung des Dateisystems.

Bahamat
quelle
2
Gibt es eine Möglichkeit, herauszufinden, welcher Prozess das Handle für geöffnete Dateien hat und beendet werden sollte?
Xralf
4
Verwenden lsofist wahrscheinlich der beste Weg.
Bahamat
1
zB lsof | grep loop0?
Xralf
Nein, greife nach dem Einhängepunkt. Darunter sollten alle Dateien aufgelistet sein. Ich denke nicht, dass es Dinge zeigt, die einfach ein Arbeitsverzeichnis unter dem Einhängepunkt haben, also ist es keine perfekte Methode.
Bahamat
5

Sie können auch verwenden fuser, um alle Prozesse mit dem bereitgestellten Dateisystem abzubrechen.

fuser -cuk /mnt

Optionen:

-c     
    Same as -m option, used for POSIX compatibility.

-u, --user
    Append the user name of the process owner to each PID.

-k, --kill
    Kill  processes accessing the file. Unless changed with -SIGNAL, SIGKILL is sent. An fuser process
    never kills itself, but may kill other fuser processes. The  effective  user  ID  of  the  process
    executing fuser is set to its real user ID before attempting to kill.kill.

-m NAME, --mount NAME
    NAME specifies a file on a mounted file system or a block device that is  mounted.  All  processes
    accessing  files  on  that  file  system  are  listed.   If  a  directory file is specified, it is
    automatically changed to NAME/. to use any file system that might be mounted on that directory.

Überzeugen Sie sich selbst bei sayshell .

sys0dm1n
quelle
3

In Anbetracht Ihrer "üblichen Lösung" bedeutet dies, dass die Shell, die Sie in Ihrem Konsolenfenster ausführen, ein Verzeichnis in einem Dateisystem auf diesem Gerät als aktuelles Arbeitsverzeichnis hat.

Linux und Unixe im Allgemeinen möchten unbedingt ein Dateisystem bereithalten, wenn ein Prozess ein aktuelles Arbeitsverzeichnis in diesem Dateisystem hat.

Sie können einfach cdim Konsolenfenster ein Verzeichnis in oder unter verlassen, /mntanstatt das Konsolenfenster und die darin ausgeführte Shell zu beenden.

Bruce Ediger
quelle
0

Ich bin heute auf dasselbe Problem gestoßen, und es ist mir gelungen, es zu lösen. Mein Problem ergibt sich aus dem Mounten eines Verzeichnisses in mein aktuelles Arbeitsverzeichnis. Wenn ich also "umount" ausführe, ist es passiert. Die Lösung besteht darin, das aktuelle Verzeichnis zu ändern und dann "umount .." auszuführen. ich hoffe es klappt.

yunpeng liu
quelle
0

Ich habe eine Situation entdeckt, die das Abmelden eines Geräts beeinträchtigen kann, das ich als Antwort freigeben möchte, obwohl diese Frage sehr alt ist.

Wenn auf dem Computer NFS-Freigaben gehostet sind und eine dieser NFS-Freigaben von dem Gerät gesichert wird, das Sie trennen möchten, müssen Sie die Freigabe beenden (am besten durch Beenden des NFS-Dienstes, z. B. sudo service nfs-kernel-server stopbei neueren Versionen von Ubuntu ). Der NFS-Server wird möglicherweise nicht in lsof oder fuser angezeigt, was die Identifizierung des Problems erschwert.

Wug
quelle
0

Für mich kamen die „Gerät beschäftigt“ Fehler, wenn ich in diesem Ordner war , und ich war zu versuchen , umountes

// Basierend auf @klapaucius Kommentar

adrianTNT
quelle
Dies gibt keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klarstellung zu bitten, hinterlassen Sie einen Kommentar unter seinem Beitrag. - Aus Bewertung
G-Man sagt "Reinstate Monica"
Ich habe die Antwort ein wenig bearbeitet. Ich habe angegeben, was dieses Problem verursachen kann und was in meinem Fall die Lösung war.
AdrianTNT