使用“空闲”和“awk”计算可用交换空间的百分比



我正在尝试计算可用交换空间的百分比。使用这样的东西:

free | grep 'Swap' | awk '{t = $2; f = $4; print ($f/$t)}'

awk扔:

awk: program limit exceeded: maximum number of fields size=32767

而且我真的不明白为什么,我的程序很简单,我是否有可能遇到奇怪的范围错误?

试试这个:

free | grep 'Swap' | awk '{t = $2; f = $4; print (f/t)}'

在您的代码中,您尝试打印分别$FreeMemory和$TotalMemory的$f和$t。所以我想你总共有大约 4gig ram,指的是 ~ $400000,这比 awk 在标准配置中使用的字段总数略高一点。除了更容易尝试使用meminfo之外,请尝试仅打印引用变量的f/t,然后您就会得到答案。

请注意,使用 /proc/meminfoSwapFree 行读取信息可能更容易/更可靠。

像这样:

$ grep SwapFree /proc/meminfo | awk '{print $2}'

你不需要变量。你可以使用普通

awk '{ print $4/$2 }'

从/proc/meminfo 阅读:

lennart@trololol:~$ grep SwapFree /proc/meminfo | awk '{print $2}'
0

我意识到问题是关于使用"free"和"awk",但是如果您正在运行SAR,那么这将为您提供最近记录的百分比值:

sar -S|tail -2|head -1|awk '{print $5}'

最新更新