我知道我有更多可用空间

use*_*084 1 linux storage hard-drive opensuse

我试图追踪我所有的硬盘空间都去了哪里。我有 1TB 的总空间,根据我的系统,使用了 433GB。但是,我知道我有更多,因为我没有任何我知道的大文件或文件夹。下面显示了前 10 个目录。

du -cks *|sort -rn|head
Run Code Online (Sandbox Code Playgroud)

它说 /var 文件夹占用了 480GB,但是当我进入该文件夹时,没有什么大的(我从 root 或 '/' w/ su 权限运行它)。

我错过了什么?是否有任何隐藏文件,该代码没有拿起?作为参考,我使用的是 opensuse 11.3,如果这有区别的话。

Ale*_*lex 8

如果您按照建议执行递归 du 并计算整个 var 树的所有空间,并且它没有与使用的总数相加,则您可能需要检查未链接的文件句柄是否处于打开状态。这可能发生在不正确的 logrotate 脚本中,这些脚本删除或移动仍在积极写入的日志。您取消链接文件(删除 inode,因此 ls 不再报告它)但进程仍在写入它。

lsof 通常不是标准安装,因此您必须通过 OpenSuse 使用的任何方式安装它,然后运行: lsof +L -a /var

你会看到像这样的输出

COMMAND   PID      USER     FD    TYPE DEVICE SIZE/OFF NLINK   NODE NAME
httpd     32287    apache   14w   REG  253,7  3020256     1    121  /var/log/httpd/access_log
Run Code Online (Sandbox Code Playgroud)

会出现很多文件,但是您要查找的是大小列中具有较大值且 NLINK 列中具有 0(并且未标记为已删除)的文件。该文件仍在写入,但不再链接。

然后,您可以通过终止打开未链接文件句柄的进程来更正它。