У меня есть каталог в моей системе Debian. Каталог:
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: -
Каталог пуст:
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 ..
Но моя система так не считает:
root@debian:/3/20150626# rm -rf 00
rm: cannot remove `00': Directory not empty
Я не знаю, почему это произойдет, и я не могу найти способ двигаться вперед. Кто-нибудь может оказать помощь?
Ни один из предыдущих вопросов, которые я мог найти, не решил эту конкретную проблему. Но, чтобы ответить на некоторые из вопросов, которые я видел, задаваемые на аналогичных постах:
a.) Папка была создана запущенным процессом, который создал много папок ранее, и эти папки были удалены много раз прежде. Этот конкретный застрял в подвешенном состоянии.
б.) В этот каталог не должно быть ничего записано. Я проверял много раз и ls -al
вывод всегда ничего не возвращает.
c.) Я проверил lsof, и для этого каталога ничего не открылось:
root@debian:/3/20150626# lsof 00
root@debian:/3/20150626#
г) rm
не псевдоним ни к чему другому. Он довольно близок к стандартному Debian ... ничего особенного не было сделано ни с одной из основных программ Bash, таких как rm
и т. Д.
e.) Переименование разрешено, но все еще невозможно удалить:
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 ..
** Обратите внимание, здесь и далее упоминается как "delete_me", так как я переименовал его, и я просто собираюсь идти по течению.
е.) Это единственный каталог, который возвращается при запуске find
на нем.
root@debian:/3/20150626# find / -type d -name delete_me
/3/20150626/delete_me
root@debian:/3/20150626# find delete_me
delete_me
ж.) lsattr ничего не показывает:
root@debian:/3/20150626# lsattr
---------------- ./delete_me
lsattr
, есть ли какие-либо специальные атрибуты, назначенные ему?stat
вывод (и / или повторить попытку rmdir)?Ответы:
Нашел ответ. Что-то не так с этой связью, как предложил @JeffSchaller. Решение состоит в том, чтобы запустить xfs_check, чтобы увидеть, что ссылки были неправильными, а затем xfs_repair, чтобы исправить их.
mount
чтобы просмотреть имя устройства. Мой/dev/mapper/vg3-lv3
umount /3
xfs_check /dev/mapper/vg3-lv3
который вернул следующее: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
который указал, что ссылки были исправлены:resetting inode 4392587948 nlinks from 3 to 2
resetting inode 12983188890 nlinks from 1 to 2
Оказывается, у меня был другой индекс, который был неправильно связан.
Спасибо за помощь, но с помощью черной магии xfs_repair моя проблема решена.
источник
Вы пытались проверить, что атрибуты папки / каталога имеют атрибут " i " - imutable is active! Проверьте с помощью команды lsattr, что папка / каталог имеет атрибут « i », если вы выключите его с помощью «*
* «С этим вы можете выполнить задачу, которую вы хотите.
источник
-i
Атрибут файла / папки , не мешает ему показывать вверх, однако , где вы видите , что-i
это множество? На выходе ОП говорится об обратном