我在删除空目录时遇到问题,strace 显示错误:
rmdir("empty_dir") = -1 ENOTEMPTY (Directory not empty)
并且ls -la empty_dir
什么也不显示。所以我用 debugfs 连接到 fs (ext4) 并看到这个目录中的隐藏文件:
# ls -lia empty_dir/
total 8
44574010 drwxr-xr-x 2 2686 2681 4096 Jan 13 17:59 .
44573990 drwxr-xr-x 3 2686 2681 4096 Jan 13 18:36 ..
debugfs: ls empty_dir
44574010 (12) . 44573990 (316) ..
26808797 (3768) _-----------------------------------------------------------.jpg
为什么会发生这种情况?有没有机会在不卸载和全面检查 fs 的情况下解决这个问题?
附加信息:
“隐藏”文件只是一个普通的 jpg 文件,可以通过图像查看器打开:
debugfs: dump empty_dir/_-----------------------------------------------------------.jpg /root/hidden_file
# file /root/hidden_file
/root/hidden_file: JPEG image data, JFIF standard 1.02
rm -rf empty_dir
没有出现同样的错误:
unlinkat(AT_FDCWD, "empty_dir", AT_REMOVEDIR) = -1 ENOTEMPTY (Directory not empty)
find empty_dir/ -inum 26808797
什么都不显示。