我需要显示我的根/
目录文件累积大小,深度为 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