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


8

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のストックにかなり近いです...などのコア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」と呼びます。名前を変更し、フローに進むためです。

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

1
ディレクトリの名前を変更することは可能ですか?
ジェニーD

2
「リンク:3」の部分は私に飛び出します。サブディレクトリがあるようです。「find 00」は何を返しますか?
Jeff Schaller

@JennyDへの回答で私の質問を更新しました
harperville '7/07/17

1
lsattr特別な属性が割り当てられているかどうかを確認しましたか?
カハ2015

2
アイテム(a)からのこの実行中のプロセスが何らかの方法で "delete_me"のサブディレクトリを保持している可能性が高まっています。この実行中のプロセスを停止してから、stat出力を再確認(およびrmdirを再試行)できますか?
Jeff Schaller

回答:


1

答えが見つかりました。@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

フォルダー/ディレクトリの属性に属性「i」があることを確認しようとしました-imutableがアクティブです!確認してください たlsattrの フォルダ/ディレクトリには、属性「持っていることを確認するために、コマンド私はあなたが「とそれをオフにした場合、」アクティブ化を*

chattr -i ' フォルダー '

* "これにより、必要なタスクを実行できます。


1
-iファイル/フォルダーの属性は表示を妨げませんが、どこに-i設定されていると思いますか?OPの出力は反対のことを述べている
コス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.