我试图计算可用交换空间的百分比。 使用这样的东西:
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)}'
在你的代码中,你试图打印$ f和$ t,分别是$ FreeMemory和$ TotalMemory。 所以我想你总共有4gig的内存,这个数字大约是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
我意识到问题是关于使用“自由”和“awk”,但是如果你有SAR运行,那么这会给你最近记录的百分比值:
sar -S|tail -2|head -1|awk '{print $5}'