想知道“系统是什么版本”和“目录占了多少空间”,需要先确定测量对象:内核不是发行版,文件字节数不是文件系统占用,目录项本身的大小也不是整个目录树的大小。
uname 看内核,os-release 看发行版
uname -r
uname -a
cat /etc/os-release
uname -r 查看内核 release;uname -a 汇总多项系统信息。它们没有显示发行版名称,不等于命令“有误”。Linux 发行版的标识可检查 /etc/os-release 中的 NAME、ID、VERSION_ID 等字段,具体字段是否存在由系统决定。GNU uname、os-release
装有 LSB 工具的环境也能使用 lsb_release -a,但最小系统未必预装。容器中看到的内核通常来自宿主,而发行版文件来自容器文件系统;排查兼容性时应同时记录两者。
du 看目录树占用,不用 ls 的目录大小代替
# 当前目录整体汇总
du -sh .
# GNU du:下一层各目录与整体
du -h --max-depth=1 .
# GNU du:按表观大小统计,便于比较稀疏文件等情况
du -sh --apparent-size .
-s 表示汇总,-h 用便于阅读的单位。GNU du 默认统计空间使用;--apparent-size 则切换到表观大小。稀疏文件、硬链接及单位取整都会影响读数,不应要求结果与 ls -l 完全相同。GNU du
如果只想停留在当前文件系统,可按需求加入 -x,但这会排除其他挂载中的内容,不再是无条件的“全部目录”。权限不足的报错也不能忽略,否则看到的是不完整统计。
du -sh * 会漏掉什么
* 先由 shell 展开。在常见 Bash 默认设置中,它不会匹配开头为点的名称;因此 du -sh * 适合查看展开后的条目,不保证涵盖所有隐藏目录。du -sh . 不依赖这个通配符,通常更适合问“当前目录总共用了多少”。Bash 文件名展开
若 df 与 du 差距很大,还要看挂载范围、文件系统元数据、保留空间及已删除但仍打开的文件,而不是立即断言统计工具出错。日志场景可参考日志占满空间时的检查。