Ich habe versucht, rm -rf
einen Ordner zu öffnen, und "Gerät oder Ressource belegt".
In Windows hätte ich LockHunter verwendet, um dies zu beheben. Was ist das Linux-Äquivalent? (Bitte geben Sie als Antwort eine einfache "Entsperrmethode" an und vervollständigen Sie keine Artikel wie diese . Obwohl sie nützlich sind, bin ich derzeit nur an ASimpleMethodThatWorks ™ interessiert.)
rm -rf /
... ausführen. Es löscht gerne jede einzelne Datei, einschließlich / bin / rm.Antworten:
Das gewünschte Tool ist
lsof
, was für Liste geöffneter Dateien steht .Es gibt viele Optionen. Überprüfen Sie die Manpage. Wenn Sie jedoch alle geöffneten Dateien in einem Verzeichnis anzeigen möchten, gehen Sie wie folgt vor:
Das wird durch das Dateisystem unter wiederkehren
/path
, also pass auf , dass du es in großen Verzeichnisbäumen machst.Sobald Sie wissen, welche Prozesse Dateien geöffnet haben, können Sie diese Apps beenden oder sie mit dem
kill(1)
Befehl beenden.quelle
/path
. Das ist eine Ursache für versteckte "offene Dateien".lsof
scheint nichts für mich zu tun:lsof storage/logs/laravel.log
gab nichts zurück und tat es auchlsof +D storage/logs/
.umount
antwortete mitnot mounted
.mount | grep <path>
. Das zeigt, dass irgendetwas an der/dev/<abc>
Wand montiert sein könnte<path>
. Verwenden Siesudo umount -lf /dev/<abc>
und versuchen Sie dann zu entfernen<path>
. Funktioniert bei mir. Thanks @camhManchmal ist dies auf Probleme beim Mounten zurückzuführen. Daher habe ich das Dateisystem oder Verzeichnis, das Sie entfernen möchten, vom Mounten befreit:
quelle
Ich benutze
fuser
für so etwas. Es wird aufgeführt, welcher Prozess eine Datei oder Dateien in einem Mount verwendet.quelle
fuser
hilft nur in dem speziellen Fall, wenn Sie ein Dateisystem aushängen möchten. Hier ist das Problem zu finden, was eine bestimmte Datei verwendet.fuser
hilft hier nicht weiter, da das Problem darin besteht, alle offenen Dateien in einem Verzeichnisbaum zu finden. Sie könnenlsof
festlegen, dass alle Dateien und Filter angezeigt oder wiederverwendet werden sollen.fuser
hat keinen solchen Modus und muss für jede Datei aufgerufen werden.fuser
Werke werden aufgelistet. Versuchen Siefuser /var/log/*
, wenn Protokolle geöffnet sind, wird angezeigt, welche und wer sie geöffnet hat. Wenn ein einfacher Platzhalter nicht funktioniert, erledigt erfind
mit oder ohnexargs
.lsof
war nicht auf meinem Weg währendfuser
war, so dass ich die ID des zu tötenden Prozesses zu finden, also + 1 + danke.Hier ist die Lösung:
ls -a
.xyz
Dateivi .xyz
und schauen Sie, was der Inhalt der Datei istps -ef | grep username
kill -9 job_ids
- wobei job_ids der Wert der 2. Spalte des entsprechenden fehlerverursachten Inhalts in der 8. Spalte istquelle
Ich hatte das gleiche Problem, baute einen Einzeiler beginnend mit @camh Empfehlung:
Der
awk
Befehl erfasst die PIDS. Dertail
Befehl beseitigt den lästigen ersten Eintrag: "PID". Ich habe-9
auf töten verwendet, andere könnten sicherere Optionen haben.quelle
Ich hatte dieses Problem, als ein automatisierter Test eine Ramdisk erstellte. Die Befehle, die in den anderen Antworten
lsof
und vorgeschlagenfuser
wurden, halfen nichts. Nach den Tests habe ich versucht, es auszuhängen und dann den Ordner zu löschen. Ich war lange Zeit wirklich verwirrt, weil ich es nicht loswerden konnte - ich bekam ständig "Gerät oder Ressource ausgelastet" !Durch Zufall fand ich heraus, wie man eine Ramdisk loswird. Ich musste es genauso oft aushängen, wie ich den
mount
Befehl ausgeführt hatte, d. Hsudo 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 abgehängt hatte, wurde es wieder zu einem normalen Ordner und ich konnte es löschen.
Hoffentlich kann dies jemand anderem helfen, der auf dieses Problem stößt!
quelle
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 so heißen
.nfs000000123089abcxyz
.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 wird dann automatisch entfernt. Ab diesem Zeitpunkt kann ich das Verzeichnis löschen.
Dies geschieht normalerweise in Verzeichnissen, in denen ich Softwarebibliotheken installiere oder kompiliere.
quelle
Nachdem ich die obige Frage von Prabhat durchgesehen hatte, hatte ich dieses Problem in Macos High Sierra, als ich einen Encfs-Prozess blockierte und einen Neustart durchführte, der das Problem jedoch löste
Zeigte mir den Prozess und die PID (Spalte zwei).
behoben.
quelle
-15
?Wenn Sie auf den Server zugreifen können, versuchen Sie es
Oder versuchen Sie es mit umount und mount erneut
umount -l
: Lazy umount, wenn Probleme mit normalem umount auftreten.Ich hatte auch dieses Problem wo
lsof +D path
: gibt keine Ausgabe ausps -ef
: gibt keine relevanten Informationenquelle