为什么“rm -rf”会悄悄失败?

为什么“rm -rf”会悄悄失败?

[编辑] 请不要浪费时间阅读我下面的问题。事实证明我的同事是个白痴。:)

在我的服务器上,我尝试使用常规方法删除一个文件夹及其所有子文件夹rm -rf dirname,但却失败了:

kramer65@vps1:~$ ls -l
total 24
drwxrwxr-x  2 kramer65 kramer65 4096 Jul 11 22:00 backups
drwxrwxr-x  2 kramer65 kramer65 4096 Jul 17 17:37 bin
drwxrwxr-x  3 kramer65 kramer65 4096 Sep  1 11:11 cxs
kramer65@vps1:~$ rm -rf cxs/
kramer65@vps1:~$ ls
backups  bin  cxs
kramer65@vps1:~$ sudo rm -rf cxs/
kramer65@vps1:~$ ls
backups  bin  cxs
kramer65@vps1:~$ rmdir cxs/
rmdir: failed to remove ‘cxs/’: Directory not empty

我还尝试删除目录的所有内容:

kramer65@vps1:~$ cd cxs
kramer65@vps1:~/cxs$ ls
app            README.md
kramer65@vps1:~/cxs$ rm -rf *
kramer65@vps1:~/cxs$ ls
app            README.md
kramer65@vps1:~/cxs$ sudo rm -rf *
kramer65@vps1:~/cxs$ ls
app            README.md

我可以接受命令失败,只要它能告诉我哪里出错了就行。知道我哪里做错了吗?欢迎提供所有提示!

[编辑] 我尝试了以下操作(也无济于事):

kramer65@vps1:~$ sudo rm -vrf cxs/*
removed ‘cxs/app/static/img/face1.jpg’
removed ‘cxs/app/static/img/face2.jpg’
removed ‘cxs/app/static/img/face3.jpg’
[etc.etc.]
removed directory: ‘cxs/app’
removed ‘cxs/README.md’
kramer65@vps1:~$ ls cxs/
app            README.md
kramer65@vps1:~$

[EDIT2] 原来一位同事正在运行 rsync,它不断将文件重写到该文件夹​​。所以它确实删除了它们,但也自动重新创建了它们。(我在这里撞墙了!)

答案1

尝试以下操作

rm -rf /the/full/dir

答案2

检查文件的扩展属性:

lsattr -R /cxs

如果i设置了该属性,那么它是不可变的,这意味着它不能被删除。

使用以下方法删除不可变属性:

chattr -i <path to file/directory>

然后再次尝试删除。

请注意,当您尝试删除具有不可变属性集的文件时,通常不会静默失败,而是会抱怨“操作不允许”。

相关内容