我正在尝试计算可用的免费交换空间百分比。 使用这样的东西:
free | grep 'Swap' | awk '{t = $2; f = $4; print ($f/$t)}'
但awk
正在投掷:
awk: program limit exceeded: maximum number of fields size=32767
我真的不明白为什么,我的程序很简单,我可能有一个奇怪的范围错误吗?
答案 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}'