Obtenha informações de memória usadas separadas do comando free -m

3

Como resultado do comando free -m , recebo o seguinte:

             total       used       free     shared    buffers     cached
Mem:          2496       2260        236          0          5        438
-/+ buffers/cache:       1816        680
Swap:         1949         68       1881

Eu quero ter apenas memória usada, como 2260, como saída. Eu tentei o seguinte comando:

free -m | grep Mem | cut -f1 -d " " 

Ajude-me a melhorar meu comando.

Como posso obtê-lo como uma porcentagem, como 35%?

    
por Ketan Patel 20.03.2013 / 09:05

4 respostas

3

Quanto à questão adicional de exibir como porcentagem (com base na resposta de jasonwryan):

awk '/^Mem/ {printf("%u%%", 100*$3/$2);}' <(free -m)

obtém porcentagem mergulhando em 3º campo por 2º e imprime como um inteiro (sem arredondar!).

EDIT : adicionado double '%' em printf (o primeiro escapa do caractere literal destinado à impressão).

    
por 20.03.2013 / 10:05
4

Você pode usar awk sem a necessidade de um canal grep separado para isso:

awk '/^Mem/ {print $3}' <(free -m)

Onde os registros / linhas são filtrados para aqueles que começam com Mem e o terceiro campo / coluna ( $3 ) é impresso para o registro filtrado.

    
por 20.03.2013 / 09:21
3

com bash free e grep apenas

read junk total used free shared buffers cached junk < <(free -m  | grep ^Mem)
echo $used
    
por 19.05.2016 / 06:53
2

Ou com sed:

free -m | sed -n 's/^Mem:\s\+[0-9]\+\s\+\([0-9]\+\)\s.\+//p'

Outra solução seria:

free -m  | grep ^Mem | tr -s ' ' | cut -d ' ' -f 3

Créditos para a segunda solução chegaram a este .

    
por 20.03.2013 / 09:29