du 和 tree 命令的累积磁盘使用量

du 和 tree 命令的累积磁盘使用量

我需要显示我的根/目录文件累积大小,深度为 1 它看起来很容易,但我无法运行哪个值得

树命令不显示累积大小

tree --du -h -L 1 
.
├── [   7]  bin -> usr/bin
├── [4.0K]  boot
├── [ 21K]  desktopfs-pkgs.txt
├── [4.2K]  dev
├── [ 12K]  etc
├── [4.0K]  home
├── [   7]  lib -> usr/lib
├── [   7]  lib64 -> usr/lib
├── [ 16K]  lost+found
├── [4.0K]  media
├── [4.0K]  mnt
├── [4.0K]  opt
├── [   0]  proc
├── [4.0K]  root
├── [4.8K]  rootfs-pkgs.txt
├── [ 800]  run
├── [   7]  sbin -> usr/bin
├── [  19]  snap -> /var/lib/snapd/snap
├── [4.0K]  srv
├── [   0]  sys
├── [ 520]  tmp
├── [4.0K]  Untitled Folder
├── [4.0K]  usr
└── [4.0K]  var

另外,du命令

du -h -d 1 /
8,0K    /media
du: cannot read directory '/sys/kernel/tracing': Permission denied
du: cannot read directory '/sys/kernel/debug': Permission denied
du: cannot read directory '/sys/fs/pstore': Permission denied
du: cannot read directory '/sys/fs/bpf': Permission denied
0   /sys
166G    /mnt
du: cannot read directory '/run/udisks2': Permission denied
du: cannot read directory '/run/wpa_supplicant': Permission denied
du: cannot read directory '/run/user/1000/systemd/inaccessible/dir': Permission denied
du: cannot read directory '/run/svnserve': Permission denied
du: cannot read directory '/run/sudo': Permission denied
du: cannot read directory '/run/lightdm': Permission denied
du: cannot read directory '/run/lock/lvm': Permission denied
du: cannot read directory '/run/systemd/unit-root': Permission denied
du: cannot read directory '/run/systemd/inaccessible/dir': Permission denied
1,6M    /run
du: cannot read directory '/home/max/.cache/yay/wine-stable/pkg': Permission denied
du: cannot read directory '/home/max/.cache/yay/gnuradio-git/pkg': Permission denied
du: cannot read directory '/home/max/.cache/yay/pamac-classic/pkg': Permission denied
du: cannot read directory '/home/max/.cache/yay/wine-stable-next/pkg': Permission denied
du: cannot read directory '/home/max/.cache/yay/pamac-aur/pkg': Permission denied
du: cannot read directory '/home/max/.cache/paru/clone/qm-dfu-util-git/pkg': Permission denied
du: cannot read directory '/home/lost+found': Permission denied
146G    /home
.
.
.
Goes so on

我只需要 1 个深层,但du -h -d 1 /命令显示权限被拒绝。我怎样才能忽略它们以获得我试图给出的最干净的视图root permission,但显示出小错误

sudo du -h -d 1 /
8,0K    /media
0   /sys
166G    /mnt
du: cannot access '/run/user/1000/gvfs': Permission denied
1,6M    /run
146G    /home
du: cannot access '/proc/12363/task/12363/fd/4': No such file or directory
du: cannot access '/proc/12363/task/12363/fdinfo/4': No such file or directory
du: cannot access '/proc/12363/fd/3': No such file or directory
du: cannot access '/proc/12363/fdinfo/3': No such file or directory
0   /proc
19M /etc
16K /lost+found
0   /dev
49G /usr
41G /var
4,0K    /Untitled Folder
9,1M    /srv
2,6G    /opt
1,8M    /root
51M /tmp
98M /boot
403G    /

我浏览了网上的许多示例,这些命令看起来很棒,但我的终端哪个 Shell:默认 Manjaro 下的 bash 5.1.0看起来离完美还有点距离

答案1

在检查磁盘使用情况时,虚拟文件​​系统的内容(例如,在我的 GNU/Linux 上:/dev/proc/run/sys/tmp通常不相关。排除它们会使事情变得更容易。

使用du,如果您只想列出挂载的文件系统的内容/(忽略其他挂载点的内容),您可以运行:

sudo du -h -d1 -a -x /

或者,如果您不想使用-x(“一个文件系统”)选项:

sudo du -h -d1 -a --exclude=/dev --exclude=/proc \
  --exclude=/run --exclude=/sys --exclude=/tmp /

(也-a可以显示常规文件)。du

虽然tree不能限制其输出的深度-L 还显示目录的完整深度大小(即包括所有包含的子目录和文件),您可以让它生成格式化输出并随后对其进行过滤。例如,使用 JSON 和jq

sudo tree --du -a -x -h -J / | jq 'del(.[]?[]?[]?[]?[]?)'

(不幸的是,tree的 JSON 输出往往包含格式错误的位,使得该解决方案非常不可靠)。

您还可以参考追踪 Linux 上磁盘空间的去向?如果您对问题中提到的工具以外的工具感兴趣。

答案2

stderr您可以通过重定向到 来简单地过滤掉错误/dev/null

sudo du -h -d 1 / 2>/dev/null

另一种不指定深度但使用通配符的可能性是:

sudo du -sh /* 2>/dev/null

相关内容