web-dev-qa-db-ja.com

sudo rm -rfが、ルートが所有する空のディレクトリで「ディレクトリを削除できません」を返す

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。)フォルダは実行中のプロセスによって作成されたもので、以前に多くのフォルダを作成し、これらのフォルダは以前に何度も削除されています。この特定のものはリンボで立ち往生しています。

b。)現在、このディレクトリには何も書き込まれていないはずです。私は何度もチェックし、ls -al出力は常に何も返しません。

c。)私はlsofをチェックしましたが、このディレクトリには何も開いていません:

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

d。)rmは他のエイリアスにはなりません。それは標準のDebianにかなり近いです...rmなどのコアBashプログラムのどれでも特別なことは何も行われていません。

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」と呼びます。名前を変更し、フローに進むためです。

f。)これが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は何も表示しません。

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

答えが見つかりました。 @JeffSchallerが示唆したように、リンケージに問題がありました。解決策は、xfs_checkを実行してリンクが正しくないことを確認してから、xfs_repairでリンクを修正することです。

  1. mountを実行して、デバイス名を表示します。鉱山は_/dev/mapper/vg3-lv3_
  2. _umount /3_
  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

  4. リンクが修正されたことを示す_xfs_repair /dev/mapper/vg3-lv3_:

    _resetting inode 4392587948 nlinks from 3 to 2_

    _resetting inode 12983188890 nlinks from 1 to 2_

正しくリンクされていない別のiノードがあることがわかりました。

すべての助けに感謝しますが、xfs_repairの黒魔術を使用して、私の問題は解決されました。

1
harperville