저는 우분투 서버를 사용하고 있으며 내부 디렉토리의 디스크 사용량 요약을 확인하고 싶습니다. 왜 glob을 사용하여 내부 디렉토리의 디스크 사용량을 확인할 /var/lib/docker
수 없는지 혼란스럽습니다 ./var/lib/docker
*
디렉터리가 /var/lib/docker
분명히 존재하며 내부에 디렉터리가 있습니다.
$ sudo du -s /var/lib/* | grep docker
865644 /var/lib/docker
8 /var/lib/docker-engine
$ sudo du -s /var/lib/docker/*
du: cannot access '/var/lib/docker/*': No such file or directory
$ sudo file /var/lib/docker
/var/lib/docker: directory
$ sudo ls /var/lib/docker | head -n 1
builder
$ sudo du -s /var/lib/docker/builder
20 /var/lib/docker/builder
왜 오류가 발생합니까 du
?
du: cannot access '/var/lib/docker/*': No such file or directory
내 오류는 루트가 아닌 사용자와 관련된 것 같습니다. 루트로 전환하면 다음 명령을 실행할 수 있기 때문입니다 du
.
# du -s /var/lib/docker/* | sort -n
4 /var/lib/docker/runtimes
4 /var/lib/docker/swarm
4 /var/lib/docker/tmp
4 /var/lib/docker/trust
20 /var/lib/docker/builder
20 /var/lib/docker/plugins
36 /var/lib/docker/volumes
60 /var/lib/docker/network
72 /var/lib/docker/buildkit
208 /var/lib/docker/containers
1880 /var/lib/docker/image
863328 /var/lib/docker/overlay2
답변1
루트가 아닌 쉘이 glob을 확장하려고 시도 /var/lib/docker/*
하지만 할 수 없기 때문에 오류가 발생합니다(사용자가 /var/lib/docker를 읽을 수 없기 때문에). 그런 다음 쉘은 glob을 그대로 유지하고 문자 그대로 별표를 남겨두고 sudo
다음과 같이 du
불평합니다.
du: cannot access '/var/lib/docker/*': No such file or directory
*
.../var/lib/docker/ 아래에 지정된 파일이나 디렉터리가 없기 때문입니다.
답변2
명령은 du
루트 사용자에 의해 실행되지만 전역 확장은 사용자보다 먼저 수행되며 확장할 수 없기 때문에(디렉터리 권한으로 인해) 명령은 du
리터럴을 *
경로의 일부로 사용합니다.
내부 폴더의 크기를 보려면 /var/lib/docker
셸을 호출하고 sudo
전역 확장()을 작은따옴표로 묶을 수 있습니다.*
sudo bash -c 'du -sh /var/lib/docker/*' | sort -h
(저는 사람이 읽을 수 있는( -h
in -sh
) 형식을 사용하고 반환된 크기에 따라 결과를 정렬하지만 변경할 수 있습니다.)
이렇게 하면 확장이 루트로 완료됩니다(사용자를 사용하는 대신).