Sudo
檢查/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
您收到錯誤是因為您的(非根)shell 嘗試擴展 glob
/var/lib/docker/*
並且無法擴展(因為您的使用者無法讀取 /var/lib/docker)。然後,您的外殼將 glob 完好無損,留下一個字面星號 forsudo
,這就是du
抱怨的原因:du: cannot access '/var/lib/docker/*': No such file or directory
*
…因為在 /var/lib/docker/ 下沒有命名文件或目錄。
該
du
命令由 root 使用者執行,但 glob 擴展是在您的使用者之前完成的,並且由於無法擴展(由於目錄權限),該du
命令使用文字*
作為路徑的一部分。如果您想查看其中文件夾的大小
/var/lib/docker
,可以使用單引號呼叫 shellsudo
並保護全域擴展 ( ):*
sudo bash -c 'du -sh /var/lib/docker/*' | sort -h
(我使用人類可讀的 (
-h
in-sh
) 格式並根據返回的大小對結果進行排序,但您可以更改它)這樣,擴展將以 root 使用者身份完成(而不是由您的使用者完成)。