Extrai texto de uma iteração do topo

1

Eu quero executar o comando top do meu script bash

o problema é que normalmente quando eu digito o comando top no console, eu saio pelo Ctrl + C .

mas como sair de top quando executo o comando top do meu script bash?

por exemplo, como imprimir a memória livre do topo no bash?

Eu faço o seguinte, mas o comando não retorna o valor como estou explicado

 top | grep Mem: | awk '{print $6" "$7}'

quando eu corro o topo do console:

  top

  top - 17:55:24 up 20 days,  8:05,  3 users,  load average: 0.08, 0.08, 0.04
  Tasks:  93 total,   1 running,  92 sleeping,   0 stopped,   0 zombie
  Cpu(s):  1.0%us,  3.2%sy,  0.0%ni, 95.2%id,  0.5%wa,  0.0%hi,  0.0%si,  0.0%st
  Mem:   2075516k total,  1731156k used,   344360k free,   373308k buffers
  Swap:  4192924k total,       76k used,  4192848k free,  1130448k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+       COMMAND                                                               
   1 root      15   0  2072  656  568 S  0.0  0.0   0:01.36 init     
 .
 .
 .
    
por maihabunash 22.09.2014 / 17:01

2 respostas

1

Tente isto:

top -bn1 | awk '$1=="Mem:" {print $6" "$7}'
    
por 22.09.2014 / 17:43
2

A resposta de @jimmij é boa do ponto de vista das opções top , embora pareça que o formato da saída de top não possa ser invocado de maneira portátil.

Você mencionou que não tem o utilitário free , mas este é apenas um wrapper em torno da interface /proc/meminfo , o que você quase certamente tem. Por que não apenas obter as informações que você precisa diretamente da boca do cavalo (o kernel):

$ grep MemFree: /proc/meminfo
MemFree:           75916 kB
$ 

Ou se você quiser que ele seja formatado como um único número em awk :

$ awk '$1=="MemFree:" {print $2}' < /proc/meminfo
74320
$ 
    
por 22.09.2014 / 20:08