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    /

온라인에서 많은 예제를 살펴보았는데 명령이 훌륭해 보이지만 내 터미널어떤 쉘 : 기본적으로 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(.[]?[]?[]?[]?[]?)'

(불행히도 treeJSON 출력에는 종종 잘못된 형식의 비트가 포함되어 있어 이 솔루션을 매우 신뢰할 수 없게 만듭니다.)

당신은 또한 참조 할 수 있습니다Linux에서 디스크 공간이 어디로 가는지 추적하시나요?질문에 언급된 도구 이외의 도구에 관심이 있는 경우.

답변2

stderr오류를 리디렉션하여 간단히 오류를 필터링할 수 있습니다 /dev/null.

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

깊이를 지정하지 않지만 와일드카드를 사용하는 또 다른 가능성은 다음과 같습니다.

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

관련 정보