2010-08-23 5 views
2

La commande mysqladmin renvoie les valeurs en octets. Je vais aimer voir la valeur en Mo si elle est supérieure à 1 Mo (1048576 octets).Calcul d'octets au format MB

$ mysqladmin variables 
+---------------------------------+----------------------------------+ 
| Variable_name     | Value       | 
+---------------------------------+----------------------------------+ 
| auto_increment_increment  | 1        | 
| auto_increment_offset   | 1        | 
... 
| interactive_timeout    | 14400       | 
| join_buffer_size    | 10481664       | 
| key_buffer_size     | 1073741824      | 

Je peux sauvegarder et calculer chaque variable une par une. Mais comment puis-je montrer toutes les valeurs en MB?

myval1=$(((`mysqladmin variables | grep '\<key_buffer_size\>' | awk '{print $4}'`)/1048576)) 

Répondre

2

Du haut de ma tête, quelque chose comme ça fonctionnerait:

#!/bin/bash 

if [ "$1" = variables ]; then 
    /moved/elsewhere/mysqladmin $* | awk '{ sz=$4; if (sz>1048576) 
     { sz=sz/1048576 "Mb"; } 
     print $1 $2 $3 sz $5; }' 
else 
    /moved/elsewhere/mysqladmin $* 
fi 
+0

Intéressant! Est-il possible d'arrondir? – shantanuo

+0

Oui - mais awk n'a pas de fonction ronde intégrée - voir http://www.gnu.org/manual/gawk/html_node/Round-Function.html – symcbean

+0

La page indique que printf peut faire des arrondis (mais pas précis). Pouvez-vous me dire comment ajouter printf ici? – shantanuo