在一个不同问题中,我发现“有一些不应该运行du的du”,并且“输出应该告诉您已经完成了什么,下一个导致挂起的是什么”。但是,除非您知道du检查目录的顺序,否则不可能确定“下一步”是什么。那是什么命令?它似乎不是基于名称、最后修改时间、最后访问时间或创建时间(通过检查du --max-depth=1 2>/dev/null的输出和ls --time=[ctime/atime/birth]来确认的),也不是在man du或这里中描述的。
(我认识到,为了解决我最初的问题,这个信息并不是必需的--我只需要对一组目录尝试du,直到找到有问题的目录。但我很好奇!)
(对标签过于宽泛表示歉意,但没有特定的du标记,而且不可能不带标签地提交问题)
发布于 2023-01-13 05:45:09
没有什么特别的秩序。它按对象在目录中出现的顺序列出对象,本质上是随机的。(这就是为什么你引用的评论是错误的--你不可能仅仅通过观察已经完成的条目就知道下一步会发生什么。)
您可以得到的唯一排序是,它尊重您在命令行给它的根的顺序;因此,如果您像du /home /var一样运行它,它将以随机顺序遍历/home中的所有元素,然后它将以随机顺序输出/var中的所有元素。
而且,通过/proc运行它也不会有太大问题。
但是,如果要排除某些目录,则有一些开关:
-X, --exclude-from=FILE
exclude files that match any pattern in FILE
--exclude=PATTERN
exclude files that match PATTERN
-x, --one-file-system
skip directories on different file systems例如,du -x /肯定会跳过/proc和/sys,因为它们是挂载的虚拟文件系统。
https://unix.stackexchange.com/questions/731572
复制相似问题