检查 /var/lib/docker 的磁盘使用情况

检查 /var/lib/docker 的磁盘使用情况

我在 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

(我使用人类可读的(-hin -sh)格式并根据返回的大小对结果进行排序,但您可以更改它)

这样,扩展将以 root 用户身份完成(而不是使用您的用户完成)。

相关内容