为什么 du 和 quota 结果不匹配?

Bra*_*nts 8 disk-usage quota

我在没有 root 访问权限的系统上超出了我的磁盘配额。我尝试删除旧文件,但仍然结束。我试着跑去du找我用完所有空间的地方,但它报告我使用的空间很少。

结果来自 quota

   /home/1234$ quota -s
   Disk quotas for user 1234 (uid 1234): 
        Filesystem   space   quota   limit   grace   files   quota   limit   grace
       cslab:/home   4519M*  4096M   5120M   09:47    6155       0       0 
Run Code Online (Sandbox Code Playgroud)

du

   /home/1234$ du -mad 1
   ...
   936     total
Run Code Online (Sandbox Code Playgroud)

我不明白为什么quota说我使用 4.5GB 而du只计算 .9GB。我还检查了我拥有的文件/tmp,那里有 50MB 的文件。其他 3.5GB 的文件在哪里?是否有可能是配额系统错误并需要重置?

Ram*_*esh 4

我相信某些进程可能仍保持某些文件打开状态。您可以尝试使用列出它们,

lsof | grep username | grep deleted
Run Code Online (Sandbox Code Playgroud)

更好的版本是使用,

lsof +L1 | grep username
Run Code Online (Sandbox Code Playgroud)

但是,有时 和 之间的输出可能存在差异du,此链接quota对此进行了解释。摘自链接,

在 Unix 中,du 和quota 命令可能报告不同的值。造成这种差异的原因是,遍历文件系统、检查配额和更新使用表的进程仅在特定时间运行。因此,在配额检查之间会有一段时间,quota -v 命令会报告不正确的磁盘使用情况。使用 du 命令获取有关文件大小的最准确信息。