我想以 % 百分比格式获取 Sun Solaris 系统中的内存利用率。
vmstat 1 1 | tail -1 | awk 'a=`/usr/sbin/prtconf|fgrep Memory|awk '{print $3*1024}'{ print 100-($5/$a)*100}'
出现以下错误:
awk: syntax error near line 1
awk: bailing out near line 1
另外,请建议此查询是否有任何替代方案?
答案1
使用 Solaris awk
(没有开关-v
或允许设置变量),并使用原始查询开始,您可以执行以下操作:
可用内存百分比:
a=$(/usr/sbin/prtconf | /usr/bin/awk '/Memory/ {print $3*1024}'); vmstat 1 1 | tail -1 | awk "{print (\$5/$a)*100}"
已用内存百分比:
a=$(/usr/sbin/prtconf | /usr/bin/awk '/Memory/ {print $3*1024}'); vmstat 1 1 | tail -1 | awk "{print 100-(\$5/$a)*100}"
首先在 shell 中分配变量,然后vmstat
使用 shell 变量替换执行查询。这需要在 中使用双引号awk
并确保转义awk
变量。你也不需要fgrep
和awk
一起使用,awk
就可以两者兼得。
在我可用的 Opensolaris 上进行了测试,所以 YMMV。
答案2
echo ::memstat | mdb -k
将生成内核、zfs、用户和空闲内存的使用百分比。
你需要成为root。