我们有以下 df -h 输出
[root@trump var]# df -h | grep "/var"
/dev/mapper/vg-lvm_var 101G 85G 17G 84% /var
如何在 bash/awk/perl 中验证 /var 上至少有 10G 可用空间
同时我写了这个语法:
[[ ` df -h | grep "/var" | awk '{print $4}' | sed s'/G//g' ` -lt 10 ]] && echo "/var need at least 10G"
但这种语法并不优雅且丑陋,也许我错过了一些规则
答案1
使用足够新的 GNU df
,您可以使用该选项仅提取可用空间--output
。您可以将其余部分与 awk 进行比较:
$ df -k --output=avail /var | awk 'NR == 2 && ($1 < 10*2**20) {print "/var need at least 10G"}'
/var need at least 10G
即使没有这个,如果你想获得一个特定的文件系统,最好这样做df /var
(df | grep /var
除非你想捕获没有安装任何东西的情况/var
)。
要使用 bash 运行基于此的其他命令,请使用(( ))
算术上下文:
if (( $(df -k --output=avail /var | tail -1) < 10*2**20 ))
then
log "/var need at least 10G"
fi