3

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

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

awk正在抛出:

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

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

4

5 回答 5

5

试试这个:

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

在您的代码中,您尝试打印 $f 和 $t,它们分别是 $FreeMemory 和 $TotalMemory。所以我猜你总共有大约 4gig ram,大约是 400000 美元,这比 awk 在标准配置中使用的字段总数略高。除了使用 meminfo 进行更简单的尝试之外,尝试仅打印引用变量的 f/t 并得到答案。

于 2012-10-08T09:41:04.253 回答
2

/proc/meminfo请注意,使用'行读取信息可能更容易/更健壮SwapFree

就像是:

$ grep SwapFree /proc/meminfo | awk '{print $2}'
于 2012-10-08T09:32:37.313 回答
1

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

awk '{ print $4/$2 }'
于 2012-10-08T09:30:57.113 回答
0

从 /proc/meminfo 读取它:

lennart@trololol:~$ grep SwapFree /proc/meminfo | awk '{print $2}'
0
于 2012-10-08T09:34:27.717 回答
-2

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

sar -S|tail -2|head -1|awk '{print $5}'
于 2015-09-17T04:41:15.793 回答