为什么 ncdu 会扫描无意义的位置?

为什么 ncdu 会扫描无意义的位置?

我很喜欢ncdu这个软件;我还在我的所有服务器上安装了它。但想象一下,一个舒适的周六晚上被来自 Grafana 的警报破坏了,该警报称您的一台服务器使用了超过 95% 的磁盘容量。您突然冲向工作站,将浏览器切换到工作配置文件,然后通过 ssh 连接到您的计算机,但不知道磁盘使用率高的原因是什么。你很苦恼并依赖你舒适的伙伴ncdu,但问题要复杂得多。您无法在服务器上的常用文件夹中找到这些文件。当然,你只是ncdu /为了见证它扫描/proc我写这个问题的整个时间。

所以我的问题是,如果有人想要贡献ncdu源代码,会想到哪些位置并且扫描磁盘使用情况毫无意义?

答案1

为什么ncdu要扫描无意义的位置

因为(像任何程序一样)ncdu做你想做的事告诉它去做,而不是你做什么它要做。通过调用ncdu /您告诉ncdu(尝试)扫描/及其下面的所有内容。偏偏/proc就是下面这样/

如果有人想要贡献ncdu源代码,会想到哪些位置并且扫描磁盘使用情况毫无意义?

已经完成了,至少对于 Linux 来说是这样;已经记录在案。查看--exclude-kernfs选项:

--exclude-kernfs
(仅限 Linux)排除 Linux 伪文件系统,例如/proc(procfs)、/sys(sysfs)。

当前已知的伪文件系统的完整列表是:binfmt、bpf、cgroup、cgroup2、debug、devpts、proc、pstore、security、selinux、sys、trace。

(来源:man 1 ncdu.)

你需要告诉ncdu这就是你想要的:

ncdu --exclude-kernfs /

实际上,当服务器“使用超过 95% 的磁盘容量”时,您应该对该特定磁盘上的文件系统感兴趣,而不是所有文件系统,特别是其他磁盘上的文件系统。因为这-x很有帮助:

-x
不要跨越文件系统边界,即仅对与正在扫描的目录位于同一文件系统上的文件和目录进行计数。

(同上。)

相关内容