我正在尝试计算可用交换空间的百分比。使用这样的东西:
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/meminfo
的 SwapFree
行读取信息可能更容易/更可靠。
像这样:
$ 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}'