日志文件已被rm删除,磁盘空间却没有立刻释放,服务还在持续写入。Linux面试经常用这个故障区分“知道命令”和“理解文件系统对象”的候选人。
从文件系统结构图理解三个对象
图是Unix文件系统结构示意。目录项将一个名称关联到文件对象(通常通过inode号),inode记录文件元数据和数据块相关信息;进程打开文件后持有文件描述符,文件描述符通过内核打开文件对象关联实际文件。

为什么rm之后空间还占用
rm的核心效果是移除目录项(执行unlink操作)。若其他硬链接仍在或进程仍保持打开的文件引用,数据不会立即释放;当链接计数与相关打开引用归零后,文件系统才能回收相应空间。具体细节依文件系统实现而异。
定位问题常用的命令
df -h
sudo lsof +L1
ls -li /var/log/yourapp.log
df看文件系统占用,lsof +L1有助于查找已删除但仍被打开的文件。对于容器、命名空间、挂载点,还要确认观察的是同一个文件系统,不能只看宿主机的一个路径。
面试参考答法
“删除文件名只影响目录项,不一定立即释放数据。如果服务仍持有打开描述符,我会先定位占用空间的文件及进程,优先按运维规范让服务重新打开日志或进行受控重启,而不是盲目删除其他文件。”
追问:硬链接与软链接有什么不同?硬链接指向同一文件系统中的inode;符号链接本质上保存路径,不保证目标当前存在。
凡亿教育 · 电子工程师面试平台












