我正在尝试使用以下 oneliner 获取使用率至少为 90% 的所有磁盘的名称:
df -Pm | awk '+$5 >= 90 {print}'
但它没有显示“100%使用”的情况,我需要 grep 获取“100%”。为什么它不能正常工作?
答案1
您能给我们一个输出示例吗df -Pm
?我确信我们大多数人的磁盘空间都没有 100% 被使用;)
我刚刚通过修改我df
的输出进行了测试,你的awk
部分似乎没问题。
$ cat /tmp/1 | awk '+$5 >= 90 {print}'
tmpfs 1978 1 1978 101% /dev/shm
tmpfs 1978 1 1977 100% /run
答案2
我认为问题出在百分号上,这可能会将 >= 变成字符串比较。在进行比较之前将 0 添加到 $5,这样可以强制将 $5 解释为数字:
df -P | awk '0 + $5 >= 90 { print }'
答案3
我建议采取稍微另类的方法。一点数学不会伤害任何人。
df -Pml | tail -n +2 | awk '{if ($4/$2 < 0.1) print $1,"is getting full."}'
这将计算文件系统的空闲率是否低于 10%(这实际上是 df 显示它的方式,即使该列标记为“已使用”,并且-l
仅打印本地文件系统)。扔进去tail -n +2
会跳过标题。