使用`free`和`awk`计算可用交换空间百分比

时间:2012-10-08 09:28:16

标签: linux awk ubuntu-12.04 swap

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

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

awk正在投掷:

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

我真的不明白为什么,我的程序很简单,我可能有一个奇怪的范围错误吗?

5 个答案:

答案 0 :(得分:5)

试试这个:

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

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

答案 1 :(得分:2)

请注意,使用/proc/meminfo的{​​{1}}行读取信息可能更容易/更健壮。

类似的东西:

SwapFree

答案 2 :(得分:1)

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

awk '{ print $4/$2 }'

答案 3 :(得分:0)

从/ proc / meminfo中读取它:

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

答案 4 :(得分:-2)

我意识到问题是关于使用“免费”和“awk”,但是如果你有SAR运行,那么这将给你最近记录的百分比值:

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