是什么决定了“du”的运行顺序?

是什么决定了“du”的运行顺序?

在一个不同的问题我发现“有一些目录你不应该运行“, 然后 ”输出应该告诉您什么已经完成以及下一步是什么导致挂起”。但是,无法确定是什么“下一个" 除非您知道du检查目录的顺序。那是什么命令?它似乎不是基于名称、上次修改时间、上次访问时间或创建时间(通过检查du --max-depth=1 2>/dev/nullagainst的输出确认ls --time=[ctime/atime/birth]),并且它没有在man du或中描述这里

(我认识到,为了解决我最初的问题,这些信息并不是必需的 - 我可以尝试du对目录集进行尝试,直到找到有问题的目录。但我很好奇!)

(对于过于宽泛的标签表示歉意,但没有特定的du标签,并且无法提交没有标签的问题)

答案1

没有特定的顺序。它按照对象在目录中出现的顺序列出对象,基本上是随机的。 (这就是您引用的评论错误的原因 - 仅通过观察已经完成的条目您无法知道接下来会发生什么。)

你唯一能拥有的顺序是它尊重你已经在命令行中给出了它;所以,如果你像这样运行它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,因为它们是已安装的虚拟文件系统。

相关内容