sudo rm -rf renvoie «ne peut pas supprimer le répertoire» sur un répertoire vide appartenant à root

8

J'ai un répertoire sur mon système Debian. Le répertoire est:

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: -

Le répertoire est vide:

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 ..

Mais mon système ne le pense pas:

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

Je ne sais pas pourquoi cela se produirait et je ne suis pas en mesure de trouver un moyen d'avancer. Quelqu'un peut-il fournir une assistance?

Aucune des questions précédentes que j'ai pu localiser n'a résolu ce problème spécifique. Mais, pour répondre à certaines des questions que j'ai vues posées sur des messages similaires:

a.) Le dossier a été créé par un processus en cours d'exécution, qui a créé de nombreux dossiers auparavant et ces dossiers ont été supprimés plusieurs fois auparavant. Celui-ci est coincé dans les limbes.

b.) Il ne devrait rien y avoir d'écrit dans ce répertoire maintenant. J'ai vérifié plusieurs fois et la ls -alsortie ne renvoie toujours rien.

c.) J'ai vérifié lsof et il n'y a rien d'ouvert pour ce répertoire:

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

d.) rmn'est associé à rien d'autre. C'est assez proche du stock de Debian ... rien de spécial n'a été fait avec aucun des programmes Bash de base tels que rm, etc.

e.) Le changement de nom est autorisé mais impossible à supprimer:

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 ..

** Remarque, ci-après appelé "delete_me" depuis que je l'ai renommé et je vais simplement suivre le flux.

f.) C'est le seul répertoire qui est retourné lorsque je l'exécute 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 ne montre rien:

root@debian:/3/20150626# lsattr
---------------- ./delete_me
harperville
la source
1
Est-il possible de renommer le répertoire?
Jenny D
2
La partie "Liens: 3" me saute aux yeux; il semble que vous ayez un sous-répertoire. Que renvoie "find 00"?
Jeff Schaller
Mise à jour de ma question avec une réponse à la vôtre, @JennyD
harperville
1
Avez-vous vérifié lsattrsi des attributs spéciaux lui étaient attribués?
Caja
2
Il me semble de plus en plus probable que ce processus en cours à partir de l'élément (a) s'accrochera à un sous-répertoire de "delete_me" d'une certaine manière. Pouvez-vous arrêter ce processus en cours, puis revérifier la statsortie (et / ou réessayer le rmdir)?
Jeff Schaller

Réponses:

1

J'ai trouvé la réponse. Quelque chose n'allait pas avec la liaison, comme l'a suggéré @JeffSchaller. La solution consiste à exécuter xfs_check pour voir que les liens étaient incorrects, puis xfs_repair pour les corriger.

  1. exécuter mountpour afficher le nom du périphérique. Le mien est/dev/mapper/vg3-lv3
  2. umount /3
  3. xfs_check /dev/mapper/vg3-lv3 qui a renvoyé ce qui suit:

    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 ce qui indique que les liens ont été corrigés:

    resetting inode 4392587948 nlinks from 3 to 2

    resetting inode 12983188890 nlinks from 1 to 2

Il s'avère que j'avais un autre inode qui n'était pas lié correctement.

Merci pour toute l'aide mais en utilisant la magie noire de xfs_repair, mon problème est résolu.

harperville
la source
-1

Vous avez essayé de vérifier que les attributs du dossier / répertoire ont l'attribut " i " - imutable est actif! Vérifiez avec la commande lsattr pour vérifier que le dossier / répertoire a l'attribut " i " activé si vous le désactivez avec "*

chattr -i ' dossier '

* "Avec cela, vous pouvez effectuer la tâche que vous souhaitez.

Joke Sr. OK
la source
1
L' -iattribut sur un fichier / dossier ne l'empêche pas de s'afficher, mais où voyez-vous que cela -iest défini? La sortie d'OP indique le contraire
kos