Как получить физическую память из топ-l1, используя AWK в OS X Mavericks?

Я использую этот скрипт для GeekTools на Mac, и приведенный ниже код работал на предыдущих версиях 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 - это неизведанная территория, может кто-нибудь опубликовать быстрое решение этой проблемы?

3 ответа

Решение

Очистка вашего решения путем удаления ненужных скобок и int

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

Попробуйте это:

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} 

Это достигает результата, который я искал.

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

Для чьего-либо интереса и некоторого контекста я пытался преобразовать этот geeklet процессора в Memory geeklet: http://freshmacapps.com/geektool-scripts/geektool-cpu-circle-monitor

Большое спасибо всем, кто внес свой вклад.

Другие вопросы по тегам