如何使用 awk“df -Pm”命令来获取 FS 使用率超过 90% 的 FS 名称?

如何使用 awk“df -Pm”命令来获取 FS 使用率超过 90% 的 FS 名称?

我正在尝试使用以下 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会跳过标题。

相关内容