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 -al
sortie 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.) rm
n'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
lsattr
si des attributs spéciaux lui étaient attribués?stat
sortie (et / ou réessayer le rmdir)?Réponses:
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.
mount
pour afficher le nom du périphérique. Le mien est/dev/mapper/vg3-lv3
umount /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
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.
la source
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 "*
* "Avec cela, vous pouvez effectuer la tâche que vous souhaitez.
la source
-i
attribut sur un fichier / dossier ne l'empêche pas de s'afficher, mais où voyez-vous que cela-i
est défini? La sortie d'OP indique le contraire