Вы неправильно читаете вывод :строки о /proc
являются сообщениями об ошибках, потому что du
не может прочитать некоторые файлы, find
запрашивает их использование; они не указывают, что файлы в /proc
входят в первую -десятку самых больших файлов в вашей системе. В любом случае, как упомянул стив , /proc
— это собственная виртуальная файловая система, которая не занимает места на вашем диске.
Чтобы избежать перечисления ненужных файлов, вы можете указать find
не пересекать границы файловой системы, используя параметр -xdev
.
Файлы, которые, по-видимому, доставляют вам проблемы, это /var/log/awslogs.log
и/var/log/awslogs.1
:ваша первая команда перечисляет их как два самых больших файла в вашей системе, и они не отображаются в выводе вашей второй команды (вернее, они меньше — я вижу awslogs.log.1
дальше по списку ).
Вот что происходит, когда вы запускаете поток stdout и не подавляете stderr.
Поскольку sort
должен иметь весь входной буфер, прежде чем он сможет выполнять свою работу, (очевидно, )он фактически не начинает передавать вывод в head
до того, как find
закончит поиск.
Однако, поскольку вы оставили stderr неподавленным, du
сообщает об ошибках файлов, которые перестали существовать между временем, когда find
увидел их, и du
был запущен, и эти сообщения об ошибках появляются в момент их возникновения (, потому что stderr не буферизуется ).
Если вы запустите команду find без конвейера сортировки и заголовка, вы увидите, что происходит.