无法使用 rm -rf 删除文件

无法使用 rm -rf 删除文件

当我尝试使用“rm -rf”删除目录时,我不断收到“目录不为空”的提示。我感到很困惑,我查看了原因,发现似乎有一个“僵尸”文件卡在那里。我不知道如何删除它。fdisk 是我唯一的解决方案吗?

# rm -rf noc
rm: cannot remove directory `noc/INBOX/#msgs': Directory not empty

# rm -rf noc/INBOX/#msgs/000201E5.eml 

# rm -rf noc
rm: cannot remove directory `noc/INBOX/#msgs': Directory not empty

# rm  noc/INBOX/#msgs/000201E5.eml 
rm: cannot remove `noc/INBOX/#msgs/000201E5.eml': No such file or directory

# cd noc/INBOX/#msgs/
# ls -la
ls: cannot access 000201E5.eml: No such file or directory
total 2248
drwx------ 2 root root 2293760 2013-08-27 21:55 .
drwx------ 3 root root    4096 2013-08-27 21:55 ..
-????????? ? ?    ?          ?                ? 000201E5.eml

# ls -iN | cat -A
6346412 000201E5.eml$

# find . -inum 6346412 -exec rm -i {} \;
find: `./000201E5.eml': No such file or directory

# unlink 000201E5.eml 
unlink: cannot unlink `000201E5.eml': No such file or directory

答案1

应该首先卸载并使用它fsck来检查文件系统是否损坏。

如果这不能修复它,那么您可以尝试手动检查文件系统。

unlink命令只是调用系统unlink()函数。由于它返回错误No such file or directory,因此您可以先查看目录结构中关于文件的具体内容。

ls使用readdir()调用,并返回尝试读取目录条目的错误。您必须getdents()直接使用调用来读取目录。幸运的是,有一个完整的示例,man 2 getdents您可以编译和使用,而无需修改任何内容。

相关内容