sudo rm -rf gibt "Verzeichnis kann nicht entfernt werden" in einem leeren Verzeichnis zurück, das root gehört


8

Ich habe ein Verzeichnis auf meinem Debian-System. Das Verzeichnis lautet:

root@debian:/3/20150626# stat 00
File: `00'
Size: 6             Blocks: 0          IO Block: 4096   directory
Device: fe00h/65024d    Inode: 4392587948  Links: 3
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2015-06-25 20:00:00.086150791 -0400
Modify: 2015-07-07 12:39:04.174903234 -0400
Change: 2015-07-07 12:39:04.174903234 -0400
Birth: -

Das Verzeichnis ist leer:

root@debian:/3/20150626# ls -al 00
total 0
drwxr-xr-x 3 root root  6 Jul  7 12:39 .
drwxr-xr-x 3 root root 23 Jul  7 12:56 ..

Aber mein System glaubt das nicht:

root@debian:/3/20150626# rm -rf 00
rm: cannot remove `00': Directory not empty

Ich weiß nicht, warum dies passieren würde, und ich kann auch keinen Weg finden, um vorwärts zu kommen. Kann jemand Hilfe leisten?

Keine der vorherigen Fragen, die ich finden konnte, löste dieses spezielle Problem. Um einige der Fragen zu beantworten, die ich in ähnlichen Beiträgen gestellt habe:

a.) Der Ordner wurde durch einen laufenden Prozess erstellt, der zuvor viele Ordner erstellt hat, und diese Ordner wurden bereits viele Male entfernt. Dieser spezielle steckt in der Schwebe.

b.) Es sollte jetzt nichts in dieses Verzeichnis geschrieben werden. Ich habe viele Male überprüft und die ls -alAusgabe gibt immer nichts zurück.

c.) Ich habe lsof überprüft und für dieses Verzeichnis ist nichts geöffnet:

root@debian:/3/20150626# lsof 00
root@debian:/3/20150626# 

d.) rmist auf nichts anderes ausgerichtet. Es ist ziemlich nah an Debian ... nichts Besonderes, das mit einem der Kern-Bash-Programme wie rmusw. gemacht wurde.

e.) Das Umbenennen ist zulässig, kann jedoch immer noch nicht gelöscht werden:

root@debian:/3/20150626# mv 00 delete_me
root@debian:/3/20150626# ls -al
total 0
drwxr-xr-x 3 root root  30 Jul  7 13:45 .
drwxr-xr-x 7 root root 105 Jul  7 12:57 ..
drwxr-xr-x 3 root root   6 Jul  7 12:39 delete_me
root@debian:/3/20150626# rm -rf delete_me
rm: cannot remove `delete_me': Directory not empty
root@debian:/3/20150626# ls -al delete_me/
total 0
drwxr-xr-x 3 root root  6 Jul  7 12:39 .
drwxr-xr-x 3 root root 30 Jul  7 13:45 ..

** Hinweis, im Folgenden als "delete_me" bezeichnet, da ich es umbenannt habe und nur mit dem Flow fortfahren werde.

f.) Dies ist das einzige Verzeichnis, das zurückgegeben wird, wenn ich es ausführe find.

root@debian:/3/20150626# find / -type d -name delete_me
/3/20150626/delete_me
root@debian:/3/20150626# find delete_me
delete_me

g.) lsattr zeigt nichts:

root@debian:/3/20150626# lsattr
---------------- ./delete_me

1
Ist es möglich, das Verzeichnis umzubenennen?
Jenny D

2
Der Teil "Links: 3" springt zu mir heraus; Es scheint, als hätten Sie ein Unterverzeichnis. Was gibt "find 00" zurück?
Jeff Schaller

Aktualisierte meine Frage mit einer Antwort auf Ihre, @JennyD
Harperville

1
Haben Sie überprüft lsattr, ob ihm spezielle Attribute zugewiesen wurden?
Caja

2
Für mich wird es immer wahrscheinlicher, dass dieser laufende Prozess von Punkt (a) in irgendeiner Weise an einem Unterverzeichnis von "delete_me" festhält. Können Sie diesen laufenden Prozess stoppen und dann die statAusgabe erneut überprüfen (und / oder das rmdir erneut versuchen)?
Jeff Schaller

Antworten:


1

Habe die Antwort gefunden. Mit der Verknüpfung stimmte etwas nicht, wie @JeffSchaller vorschlug. Die Lösung besteht darin, xfs_check auszuführen, um festzustellen, ob die Links falsch waren, und dann xfs_repair, um sie zu beheben.

  1. Ausführen mount, um den Gerätenamen anzuzeigen. Meins ist/dev/mapper/vg3-lv3
  2. umount /3
  3. xfs_check /dev/mapper/vg3-lv3 welches das folgende zurückgab:

    link count mismatch for inode 4392587948 (name ?), nlink 3, counted 2

    link count mismatch for inode 12983188890 (name ?), nlink 1, counted 2

  4. xfs_repair /dev/mapper/vg3-lv3 was darauf hinwies, dass die Links korrigiert wurden:

    resetting inode 4392587948 nlinks from 3 to 2

    resetting inode 12983188890 nlinks from 1 to 2

Es stellte sich heraus, dass ich eine andere Inode hatte, die falsch verknüpft war.

Vielen Dank für all die Hilfe, aber mit der schwarzen Magie von xfs_repair ist mein Problem gelöst.


-1

Sie haben versucht zu überprüfen, ob die Attribute des Ordners / Verzeichnisses das Attribut " i " haben - imutable ist aktiv! Überprüfen Sie mit dem Befehl lsattr , ob für den Ordner / das Verzeichnis das Attribut " i " aktiviert ist, wenn Sie es mit "*" deaktivieren.

chattr -i ' Ordner '

* "Damit können Sie die gewünschte Aufgabe ausführen.


1
Das -iAttribut einer Datei / eines Ordners verhindert nicht, dass es angezeigt wird. Wo sehen Sie jedoch, dass -ies festgelegt ist? OPs Ausgabe sagt das Gegenteil aus
kos
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.