Comment capturer le pourcentage d'utilisation du disque d'une partition sous forme d'entier?

13

Je voudrais une méthode pour capturer l'utilisation du disque d'une partition particulière, en utilisant le répertoire où la partition est montée. La sortie doit simplement être un entier sans remplissage ni symboles suivants, car je souhaite l'enregistrer dans une variable.

J'ai utilisé df --output=pcent /mount/point , mais j'ai besoin de découper la sortie car elle comporte un en-tête inutile, un espace unique avant la valeur et un symbole% suivant la valeur comme suit:

Use%
 83%

Dans ce cas, le résultat souhaité serait simplement 83 . Je ne suis pas au courant des inconvénients liés à l'utilisation de la sortie de df , mais je suis heureux d'accepter d'autres méthodes qui ne le dépendent pas.

    
posée Arronical 10.11.2016 - 12:02
la source

5 réponses

18

J'utiliserais ...

df --output=pcent /mount/point | tr -dc '0-9'

Vous ne savez pas si sed est plus rapide, mais je ne me souviens plus des valeurs sed.

    
réponse donnée bc2946088 10.11.2016 - 12:47
la source
8

Voici la solution awk:

$ df --output=pcent /mnt/HDD | awk -F'%' 'NR==2{print }'   
 37

En gros, ce qui se passe ici est que nous traitons le caractère '%' comme séparateur de champ (délimiteur de colonne) et que nous imprimons la première colonne $ 1 uniquement lorsque le nombre d’enregistrements est égal à deux (la partie NR==2 )

Si nous voulions utiliser les outils bash -only, nous pourrions faire quelque chose comme ceci:

bash-4.3$ df --output=pcent / | while IFS= read -r line; do ((c++)); [ $c -eq 2 ] && echo "${line%\%*}"  ;done
 74
    
réponse donnée Sergiy Kolodyazhnyy 10.11.2016 - 12:57
la source
7

sed solution

df --output=pcent /mount/point | sed '1d;s/^ //;s/%//'
  • 1d supprime la première ligne
  • ; pour séparer les commandes
  • s/^ // supprime un espace au début des lignes
  • s/%// remove % signe
réponse donnée Zanna 10.11.2016 - 12:33
la source
6

Vous pouvez accéder à un grep qui extrait uniquement les chiffres:

df --output=pcent /mount/point | grep -o '[0-9]*'

Voir en direct:

$ echo "Use%
> 83%" | grep -o '[0-9]*'
83
    
réponse donnée fedorqui 11.11.2016 - 10:28
la source
0

Je suis tombé sur un serveur où --output = pcent n'était pas encore implémenté, j'ai donc utilisé la sortie normale, filtrée par colonne, suivie de l'expression rationnelle: df /mount/point | awk '{print }' | tr -dc '0-9'

    
réponse donnée Ramon Fincken 03.01.2018 - 19:55
la source

Lire d'autres questions sur les étiquettes