我在没有 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
从du
/home/1234$ du -mad 1
...
936 total
我不明白为什么quota
说我正在使用 4.5GB,而实际上du
只算 0.9GB。我还检查了我拥有的文件,/tmp
其中有 50MB 的文件。另外 3.5GB 的文件在哪里呢?是否有可能是配额系统错误,需要重置?
答案1
我相信某些进程可能仍保持某些文件打开状态。您可以尝试使用列出它们,
lsof | grep username | grep deleted
更好的版本是使用,
lsof +L1 | grep username
du
然而,有时和之间的输出可能存在差异,quota
这在本节中进行了解释关联。摘自链接,
在 Unix 中,du 和quota 命令可能报告不同的值。造成这种差异的原因是,遍历文件系统、检查配额和更新使用表的进程仅在特定时间运行。因此,在配额检查之间会有一段时间,quota -v 命令会报告不正确的磁盘使用情况。使用 du 命令获取有关文件大小的最准确信息。
答案2
quota
通过查询文件系统来查找文件实际占用的块来工作。
du
通过递归扫描目录来查找文件。
这两种方法可能会产生不同的结果。例如,当您“删除”文件时,列出目录时该文件将不再可见。但是,直到磁盘上的最后一个文件句柄关闭后,磁盘上的块才真正被释放。在这种情况下,该文件对 不可见du
,但仍计入您的配额。