我在 ubuntu 服务器上,想要检查内部目录的磁盘使用情况摘要,/var/lib/docker
我很困惑为什么我无法/var/lib/docker
使用 glob检查内部所有目录的磁盘使用情况*
。
该目录/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
我的错误似乎与非 root 用户有关,因为如果我切换到 root 用户,那么我可以发出以下命令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
您收到错误是因为您的(非 root)shell 尝试扩展 glob/var/lib/docker/*
但无法扩展(因为您的用户无法读取 /var/lib/docker)。然后你的 shell 保持 glob 完好无损,为 留下一个字面的星号sudo
,这就是du
抱怨的地方:
du: cannot access '/var/lib/docker/*': No such file or directory
*
...因为/var/lib/docker/ 下没有指定的文件或目录。
答案2
该du
命令由 root 用户执行,但 glob 扩展是在您的用户之前完成的,并且由于无法扩展(由于目录权限),因此该du
命令使用文字*
作为路径的一部分。
如果你想查看里面文件夹的大小/var/lib/docker
,你可以调用一个 shell,并用单引号sudo
保护 glob 扩展 ( ):*
sudo bash -c 'du -sh /var/lib/docker/*' | sort -h
(我使用人类可读的(-h
in -sh
)格式并根据返回的大小对结果进行排序,但您可以更改它)
这样,扩展将以 root 用户身份完成(而不是使用您的用户完成)。