在Linux系统中,当你删除一个正在被进程打开的文件时,磁盘空间不会立即释放。这是因为Linux的文件系统采用引用计数机制,只有当文件的所有引用(包括打开文件的进程)都关闭后,空间才会真正释放。
使用lsof
命令查找仍在使用已删除文件的进程:
sudo lsof +L1
# 或者更精确的查找
sudo lsof | grep deleted
查看输出结果,找到对应的进程ID(PID)和命令
终止相关进程:
sudo kill -9 <PID>
如果删除的是某个服务使用的日志文件等,可以尝试重启该服务:
sudo systemctl restart <service-name>
对于日志文件等,更好的做法是清空而非删除:
sudo truncate -s 0 /path/to/largefile.log
确认确实是文件未释放问题:
df -h # 查看磁盘使用情况
du -sh / # 查看实际占用空间
如果两者显示的空间差异很大,则可能是删除的文件仍有进程在使用。
truncate
或echo "" > file
方式清空而非直接删除希望以上解决方案能帮助您恢复被占用的磁盘空间。