Calculando a porcentagem da memória total disponível no Linux como um inteiro no bash

1

Aqui está um script bash que está calculando 80% do total de RAM disponível como um inteiro em uma caixa do Linux:

server_ram_mb=$(awk '/MemTotal/ {printf( "%.2f\n", $2 / 1024)}' /proc/meminfo)
echo "($server_ram_mb * 0.8)/1" | bc > /tmp/output
eighty_percent_ram_mb=$(cat /tmp/output)

No entanto, há algumas coisas que não gosto disso:

  • Grava em um arquivo temporário (tentei defini-lo como uma variável e não consegui passar por problemas de sintaxe)
  • Requer bc , que não é instalado por padrão em todas as distros do Linux

Como posso reescrever / simplificar isso para evitar esses problemas?

    
por tleyden 30.04.2016 / 01:58

2 respostas

4

eighty_percent_ram_mb=$(free -m | awk 'NR==2{printf "%d", $2*0.8 }')

Deve fazer o trabalho:)

    
por 30.04.2016 / 02:14
0

Alguém acabou de twittar isso para mim!

eighty_percent_ram_mb=$(free -m | awk 'NR==2{printf "%.0f\n", $2*0.8 }')

Eu tentei e funcionou.

    
por 30.04.2016 / 02:14

Tags