【问题标题】:How to get Physical Memory from top -l1 using AWK in OS X Mavericks?如何在 OS X Mavericks 中使用 AWK 从 top -l1 获取物理内存?
【发布时间】:2014-01-16 13:08:07
【问题描述】:

我在 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 对我来说是一个未知领域,有人可以为此发布一个快速修复吗?

【问题讨论】:

  • 执行top -l1 | grep "PhysMem" 并发布输出
  • 你不需要grepawk,使用:top -l1 | awk '/PhysMem/ {print "X"int(($2+$4)/($8+$10)*50)"X"}'(不能解决你的问题)
  • 我在原帖 Fredrik 中发布了 top -l1 | grep "PhysMem" 的输出。
  • $8$10 不存在并给出0,因此在0 上划分会出错。你想从你的输出中计算出什么? $2=6796M $4=(936M 如你所见,不是干净的数字。

标签: macos awk terminal osx-mavericks system-status


【解决方案1】:

通过删除不需要的括号和int来清理您的解决方案

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

【讨论】:

    【解决方案2】:

    试试这些:

    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} 
    

    【讨论】:

      【解决方案3】:

      这达到了我想要的结果。

      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-03-18
        • 2014-05-05
        • 2019-11-25
        • 1970-01-01
        • 2014-03-22
        • 1970-01-01
        • 2015-05-28
        • 2013-11-22
        相关资源
        最近更新 更多