Tente isto:
top -bn1 | awk '$1=="Mem:" {print $6" "$7}'
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
.
.
.
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
$
Tags top awk shell-script