本文最后更新于 2024-10-17,文章内容距离发布已经超过7日。

Linux硬盘空间占用和实际不一样的主要原因是由于删除的文件被进程占用。‌ 当文件被删除后,如果仍有进程持有该文件的句柄,磁盘空间不会被立即释放。这些被删除的文件会标记为“deleted”,但仍然占用磁盘空间,直到持有该文件的进程被终止‌。

具体来说,当文件被删除后,虽然它在文件系统的目录结构中被解除链接(unlink),但如果仍有进程打开该文件,那么该文件并不会从磁盘中真正删除。这些进程会继续占用该文件的空间,导致df命令显示的已使用空间比实际大‌。

为了解决这个问题,可以通过以下步骤操作:

  1. 使用lsof | grep deleted命令查找所有被删除但仍被占用的文件‌。

  2. 找到对应的进程号后,使用kill命令终止这些进程,从而释放被占用的空间‌。

  3. 重启相关服务或应用,确保所有进程正确关闭并重新初始化‌。

通过这些步骤,可以有效解决Linux硬盘空间占用和实际不一致的问题。

#查看分区大小

df -Th

#查看实际使用大小

du -sh 

#实际与显示不一致,Linux 里的文件被删除后,空间没有被释放是因为在 Linux 系统中,通过 rm 或者文件管理器删除文件将会从文件系统的目录结构上解除链接 。若文件被占用,那么进程将仍然可以读取该文件,磁盘空间也一直被占用。状态会被 标记为deleted ,其实该文件并没有从磁盘中删除。

#查找文件被占用情况,找到对应的进程kill掉即可

lsof |grep delete