0

我在 mac 上为 GeekTools 使用这个脚本,下面的代码在以前的 OSX 版本上工作。但是在 Mavericks 中,它返回下面指定的错误。

$ top -l1 | grep "PhysMem"|awk '{print "X"int(($2+$4)/($8+$10)*50)"X"}'

awk: division by zero
 input record number 1, file 
 source line number 1

awk 之前的输出:

$ top -l1 | grep "PhysMem"
PhysMem: 6796M used (936M wired), 1282M unused.

由于 awk 对我来说是一个未知领域,有人可以为此发布一个快速修复吗?

4

3 回答 3

1

通过删除不需要的括号和int

top -l1 | awk '/PhysMem/ {print int((1-$6/($2+$6))*50)}'
42
于 2014-01-16T17:40:40.597 回答
1

试试这些:

top -l 1 | awk '/PhysMem/ {print $4}' | sed s/M// | sed s/\(//

已用内存:

top -l 1 | awk '/PhysMem/ {print $2}

空闲内存:

top -l 1 | awk '/PhysMem/ {print $6} 
于 2014-01-16T13:59:08.387 回答
0

这达到了我想要的结果。

top -l1 |awk '/PhysMem/ {print "X"int((1-(int($6)/((int($6)+int($2)))))*50)"X"}'

为了任何人的兴趣和某些背景,我试图将此 CPU geeklet 转换为 Memory geeklet: http ://freshmacapps.com/geektool-scripts/geektool-cpu-circle-monitor

非常感谢所有做出贡献的人。

于 2014-01-16T14:51:15.417 回答