我在一个ubuntu服务器上,想检查/var/lib/docker中目录的磁盘使用情况摘要,我很困惑为什么我不能使用glob *检查/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发布于 2019-08-09 18:28:29
您会得到错误,因为您的(非根) shell试图展开glob /var/lib/docker/*,但无法(因为用户无法读取/var/lib/docker )。然后,您的外壳保持了完整的glob,为sudo留下了一个文字星号,这正是du所抱怨的:
du: cannot access '/var/lib/docker/*': No such file or directory..。因为在/var/lib/docker/下没有名为*的文件或目录。
发布于 2020-04-23 14:04:59
根用户正在执行du命令,但是glob扩展是在您的用户之前完成的,而且由于无法展开它(由于目录权限),du命令使用文字*作为路径的一部分。
如果要查看/var/lib/docker中文件夹的大小,可以使用sudo调用shell,并使用单引号保护glob展开(*):
sudo bash -c 'du -sh /var/lib/docker/*' | sort -h(我使用人类可读的(__-h in -sh__)格式,并根据返回的大小对结果进行排序,但您可以更改它)
这样,扩展将作为根用户完成(而不是与用户一起完成)。
https://unix.stackexchange.com/questions/534788
复制相似问题