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 -al
Ausgabe 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.) rm
ist auf nichts anderes ausgerichtet. Es ist ziemlich nah an Debian ... nichts Besonderes, das mit einem der Kern-Bash-Programme wie rm
usw. 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
lsattr
, ob ihm spezielle Attribute zugewiesen wurden?stat
Ausgabe erneut überprüfen (und / oder das rmdir erneut versuchen)?Antworten:
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.
mount
, um den Gerätenamen anzuzeigen. Meins ist/dev/mapper/vg3-lv3
umount /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
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.
quelle
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.
* "Damit können Sie die gewünschte Aufgabe ausführen.
quelle
-i
Attribut einer Datei / eines Ordners verhindert nicht, dass es angezeigt wird. Wo sehen Sie jedoch, dass-i
es festgelegt ist? OPs Ausgabe sagt das Gegenteil aus