2 votes

Calculer le pourcentage de la mémoire totale disponible sous linux sous forme d'un nombre entier en bash

Voici un bash script qui calcule 80% de la RAM totale disponible comme un entier sur une boîte 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)

Cependant, il y a certaines choses que je n'aime pas à ce sujet :

  • Il écrit dans un fichier temporaire (j'ai essayé de le mettre dans une variable mais je n'ai pas réussi à dépasser les problèmes de syntaxe).
  • Il faut bc qui n'est pas installé par défaut sur toutes les distributions Linux.

Comment puis-je réécrire/simplifier ceci pour éviter ces problèmes ?

5voto

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

Cela devrait faire l'affaire :)

0voto

tleyden Points 166

Quelqu'un vient de me le tweeter !

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

J'ai essayé et ça a marché.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X