在 AIX 上使用“df”命令查看磁盘消耗信息

在 AIX 上使用“df”命令查看磁盘消耗信息

我正在尝试获取占用空间较高的文件系统。我正在尝试使用df带有标志的命令-g(千兆字节视图)来执行此操作,但无法获得预期值。

df -g | sed 's/%//g'| awk '+$5>=75 {print}' | head -10

使用下面的命令我收到错误:

df -g | sed 's/%//g'| awk '{print $5>=75}' | head -4

错误信息:

Syntax Error The source line is 1.
The error context is
               {print >>>  $5>= <<<
awk: 0602-502 The statement cannot be correctly parsed. The source line is 1.

以下是 AIX 上 df -g 命令的输出:

/tmp>df -g | sed 's/%//g'| awk '$5 >= 75 { print }' | head -4
Filesystem    GB blocks      Free Used    Iused Iused Mounted on
/dev/hd4          10.50     10.05    5    16492     1 /
/dev/hd2          25.50     18.15   29    64361     2 /usr
/dev/hd9var        2.50      0.72   72     4521     3 /var

完整视图:

Filesystem    GB blocks      Free %Used    Iused %Iused Mounted on
/dev/hd4          10.50     10.05    5%    16492     1% /
/dev/hd2          25.50     18.15   29%    64357     2% /usr
/dev/hd9var        2.50      1.39   45%     4512     2% /var
/dev/hd3          21.50     20.24    6%     1495     1% /tmp

我在 AIX 7.1 PowerPC_POWER8 上尝试过。我不知道我做错了什么!

答案1

不要使用trandawk两次,只需使用 awk 一次:

df -g | awk '{ sub("%", "", $4); if ($4 >= 75) { print $4, $7 }}' | sort -n

这会将字段 4 中的百分号替换为空字符串(将其剥离);如果剩余值至少为 75,则打印字段 4 和 7,然后通过管道将它们排序。

基于记忆的改进斯特凡的答案之一

df -g | awk '$4+0 >= 75 { print $4, $7 }' | sort -n

“+0”加法强制进行数字比较,而不是严格基于字符串的比较。

如果您想保留标题,请将条件更改为:

df -g | awk 'NR < 2 || $4+0 >= 75 { print $4, $7 }' | sort -n

答案2

专注于awk代码:

awk '{print $5>=75}'

这大概应该是

awk '$5 >= 75 { print }'

如果第五个字段的数值大于或等于 75,则输出当前输入记录。

从您得到的输出来看,您可能想要检查$4而不是$5虽然,因为我认为它是包含百分比的第四个字段:

df -g | tr -d '%' | awk '$4 >= 75 { print }' | head -4

查看错误消息:awk在 OpenBSD 上使用(似乎以与 AIX 完全相同的方式抱怨awk),原始代码有一个语法错误,因为它无法打印$5 >= 75(除非放在括号内,在这种情况下它将计算为0(假)或 1(真))。mawk行为相同。

GNUawk接受原始代码中的语法,但显然仍然不是您想要的。

答案3

这是错误...“文件系统 GB 块空闲已使用 Iused Iused 安装在”

解决办法是:

# df -g | grep Filesystem | sed 's/%//g'| awk '{print $5>=75}' | head -4

相关内容