在Linux中需用df提取磁盘空间数值再比较:推荐按可用字节数判断(如df -B1 / | awk 'NR==2 {print $4}'),或按使用率百分比判断(如df / | awk 'NR==2 {gsub(/%/,"",$5); print $5}'),并注意错误处理、挂载点选择及过滤tmpfs。

在 Linux 中,不能直接用 if 语句“判断剩余空间是否充足”,因为 shell 不提供原生命令做这种语义判断——必须借助 df 提取数值,再用算术比较完成逻辑分支。
核心思路:提取可用空间(字节或百分比)再比较
df 输出是文本,需用工具提取关键字段。最稳妥的是按挂载点获取“可用字节数”(Avail列),避免单位换算误差;也可用使用率(Use%)但要注意去掉 % 符号。
- 查根分区可用字节:
df -B1 / | awk 'NR==2 {print $4}'(-B1强制以字节为单位,NR==2跳过表头) - 查根分区使用率数字:
df / | awk 'NR==2 {gsub(/%/,"",$5); print $5}'
按可用字节数判断(推荐)
适合设定硬性阈值,比如“至少保留 5GB 可用空间”:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
min_free_bytes=$((5 * 1024**3)) # 5GB
avail_bytes=$(df -B1 / | awk 'NR==2 {print $4}')
if [ "$avail_bytes" -lt "$min_free_bytes" ]; then
echo "警告:根分区剩余空间不足 5GB"
# 可执行清理、告警等操作
fi按使用率百分比判断
适合通用监控场景,例如“使用率超 90% 即触发”:
usage_pct=$(df / | awk 'NR==2 {gsub(/%/,"",$5); print $5}')
if [ "$usage_pct" -gt 90 ]; then
echo "磁盘使用率已达 ${usage_pct}%,建议检查"
fi注意:df / 的输出列数可能因系统略有差异(如含 Filesystem 列名过长),用 df -P /(POSIX 格式)更稳定,保证列对齐。
实际脚本中需考虑的细节
-
错误处理:如果
df执行失败(如路径不存在),变量会为空,直接参与-lt比较会报错。建议先检查变量是否为数字:[[ "$avail_bytes" =~ ^[0-9]+$ ]] || { echo "df 获取失败"; exit 1; } -
挂载点选择:不要只看
/,关键服务可能挂在独立分区(如/var/log、/data),应针对具体路径检测:df -B1 /var/log | awk 'NR==2 {print $4}' -
tmpfs 干扰:
df默认列出所有文件系统,包括内存中的tmpfs。若只关心物理磁盘,加-x tmpfs -x devtmpfs过滤:df -x tmpfs -x devtmpfs -B1 / | awk 'NR==2 {print $4}'

















