it-swarm.com.de

Wie komme ich über "Gerät oder Ressource beschäftigt" hinweg?

Ich versuchte zu rm -rf einen Ordner und "Gerät oder Ressource beschäftigt".

In Windows hätte ich LockHunter verwendet, um dies zu beheben. Was ist das Linux-Äquivalent? (Bitte geben Sie als Antwort eine einfache Methode zum "Entsperren" an und vervollständigen Sie keine Artikel wie diese . Obwohl sie nützlich sind, interessiert mich derzeit nur ASimpleMethodThatWorks ™.)

250
ripper234

Das gewünschte Tool ist lsof, das für list open files steht.

Es gibt viele Optionen. Überprüfen Sie daher die Manpage. Wenn Sie jedoch alle geöffneten Dateien in einem Verzeichnis anzeigen möchten:

lsof +D /path

Das wird durch das Dateisystem unter /path Wiederkehren. Achten Sie also darauf, dass Sie dies in großen Verzeichnisbäumen tun.

Sobald Sie wissen, in welchen Prozessen Dateien geöffnet sind, können Sie diese Apps beenden oder sie mit dem Befehl kill(1) beenden.

255
camh

manchmal ist dies das Ergebnis von Montageproblemen. Daher habe ich die Bereitstellung des Dateisystems oder Verzeichnisses aufgehoben, das Sie entfernen möchten:

umount/path

122
kip2

Ich benutze fuser für solche Dinge. Es wird aufgelistet, welcher Prozess eine Datei oder Dateien innerhalb eines Mount verwendet.

16
BillThor

Hier ist die Lösung:

  1. Gehen Sie in das Verzeichnis und geben Sie ls -a
  2. Sie finden ein .xyz Datei
  3. vi .xyz und schauen Sie sich den Inhalt der Datei an
  4. ps -ef | grep username
  5. Sie sehen den .xyz-Inhalt in der 8. Spalte (letzte Zeile)
  6. kill -9 job_ids - wobei job_ids der Wert der 2. Spalte des entsprechenden fehlerbedingten Inhalts in der 8. Spalte ist
  7. Versuchen Sie nun, den Ordner oder die Datei zu löschen.
12
user73011

Ich hatte das gleiche Problem und baute einen Einzeiler, der mit der Empfehlung von @camh begann:

lsof +D ./ | awk '{print $2}' | tail -n +2 | xargs kill -9

Der Befehl awk erfasst die PIDS. Der Befehl tail entfernt den lästigen ersten Eintrag: "PID". Ich benutzte -9 Beim Töten haben andere möglicherweise sicherere Optionen.

Ich erlebe dies häufig auf Servern mit NFS-Netzwerkdateisystemen. Ich gehe davon aus, dass es etwas mit dem Dateisystem zu tun hat, da die Dateien normalerweise den Namen .nfs000000123089abcxyz Haben.

Meine typische Lösung besteht darin, das übergeordnete Verzeichnis der Datei umzubenennen oder zu verschieben und später in ein oder zwei Tagen wiederzukommen. Die Datei wurde dann automatisch entfernt. An diesem Punkt kann ich das Verzeichnis löschen.

Dies geschieht normalerweise in Verzeichnissen, in denen ich Softwarebibliotheken installiere oder kompiliere.

7
user5359531

Ich hatte dieses Problem, als ein automatisierter Test eine Ramdisk erstellte. Die in den anderen Antworten vorgeschlagenen Befehle lsof und fuser waren nicht hilfreich. Nach den Tests habe ich versucht, die Bereitstellung aufzuheben und dann den Ordner zu löschen. Ich war lange Zeit wirklich verwirrt, weil ich es nicht loswerden konnte - ich wurde immer wieder "Gerät oder Ressource beschäftigt"!

Durch Zufall habe ich herausgefunden, wie man eine Ramdisk loswird. Ich musste es genauso oft aushängen, wie ich den Befehl mount ausgeführt hatte, d. H. Sudo umount path

Aufgrund der Tatsache, dass es mit automatisierten Tests erstellt wurde, wurde es viele Male gemountet, weshalb ich es nicht loswerden konnte, indem ich es nach den Tests einfach einmal abmontierte. Nachdem ich es viele Male manuell abgemeldet hatte, wurde es schließlich wieder zu einem regulären Ordner und ich konnte es löschen.

Hoffentlich kann dies jemand anderem helfen, der auf dieses Problem stößt!

5
gloriphobia

Nachdem ich Prabhats Frage oben beantwortet hatte, hatte ich dieses Problem in Macos High Sierra, als ich einen encfs-Prozess gestrandet und durch einen Neustart gelöst habe, aber das hier

ps -ef | grep name-of-busy-dir

Zeigte mir den Prozess und die PID (Spalte zwei).

Sudo kill -15 pid-here

repariert.

5
bil

Wenn auf den Server zugegriffen werden kann, versuchen Sie es

Löschen dieses Verzeichnisses vom Server

Oder wiederholen Sie mount und mount erneut umount -l: Lazy Umount, wenn ein Problem mit dem normalen Umount auftritt.

Ich hatte auch dieses Problem wo

lsof +D path: gibt keine Ausgabe

ps -ef: gibt keine relevanten Informationen

3