在试图用“rm -rf”删除一个目录的时候,我一直得到“目录不为空”。 困惑,我看了为什么,我似乎有一个“僵尸”的文件卡在那里。 我不知道如何删除它。 fdisk是我唯一的解决scheme吗?
# 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
您应该先卸载并使用fsck检查文件系统是否损坏。
如果这不能修复它,那么你可以尝试手动检查文件系统。
unlink命令只是简单地调用系统的unlink()函数。 既然它返回错误No such file or directory ,你可以开始查看目录的结构是什么说的文件。
ls使用readdir()调用,并返回一个错误,试图读取dir条目。 您将不得不直接使用getdents()调用来读取目录。 幸运的是,在man 2 getdents有一个完整的例子,你可以编译和使用,而不需要修改任何东西。