答案1
您误读了输出:有关的行/proc
是错误消息,因为du
无法读取某些文件find
要求它使用;它们并不表明 中的文件/proc
属于系统上前十个最大的文件。无论如何,作为史蒂夫提到的,/proc
是它自己的虚拟文件系统,并且不占用驱动器上的任何空间。
为了避免列出不相关的文件,您可以find
使用该选项告诉不要跨越文件系统边界-xdev
。
似乎给您带来麻烦的文件是/var/log/awslogs.log
和/var/log/awslogs.1
:您的第一个命令将它们列为系统上两个最大的文件,并且它们不会出现在第二个命令的输出中(或者更确切地说,它们较小 - 我明白awslogs.log.1
列表的下方)。
答案2
这就是当您管道化 stdout 并且不抑制 stderr 时会发生的情况。
因为在完成其工作之前需要拥有整个输入缓冲区(显然),所以在完成搜索之前sort
它实际上并没有开始将输出传递给它。head
find
但是,由于您未抑制 stderr,因此会报告在看到它们和du
启动之间停止存在的文件的错误,并且这些错误消息会在引发它们时报告(因为 stderr 没有被缓冲)。find
du
如果您在没有排序和头管道的情况下运行 find 命令,您将看到发生了什么。