Как получить физическую память из топ-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
Большое спасибо всем, кто внес свой вклад.