Je sais que df -hl
génère une liste de toutes mes partitions avec sa taille, son utilisation en pourcentage et l'espace disponible.
Si je voulais afficher uniquement la taille et l'utilisation en pourcentage sda2
et sda3
, par exemple, comment pourrais-je dire à Linux (Ubuntu) de les vérifier, de les additionner et de me les montrer?
ubuntu
command-line
user32398
la source
la source
Réponses:
Pour
df
calculer les totaux, utilisez l'--totals
option. Si vous ne souhaitez que les totaux sur certains lecteurs sélectionnés, spécifiez-les comme arguments.Exemples (et sortie de mon ordinateur)
C'est le total pour toutes les montures locales:
Restreindre à quelques lecteurs (notez que si le chemin spécifié n'est pas un point de montage exact, le point de montage contenant le plus proche est utilisé [voir note à la fin] ):
ou en utilisant des
dev
noms:Personnalisation supplémentaire
Si vous souhaitez répertorier tous les montages à l'exception des montages «spéciaux», vous pouvez utiliser l'
-x
option pour exclure par type de partition. (Utilisez l'-T
option pour afficher les types.)Personnellement, pour une utilisation interactive, j'utilise l'alias bash suivant (ajouté à
~/.bash_aliases
) pour exclure les montages «non physiques».Remarque
La spécification de chemins dans les points de montage peut parfois donner des résultats sous une forme différente en spécifiant le chemin exact vers le point de montage. Par exemple, sur mon ordinateur portable, j'utilise
sshfs
pour monter mon serveur de fichiers (local).La racine du serveur (
/
) est montée sur~/.server-root
. Cependant, sur le serveur, des disques sont montés sur/disks/*
lesquelsdf
(sur l'ordinateur portable) ne «savent» pas.Évidemment,
df
peut répertorier l'utilisation du disque sur les différents supports du serveur, si les chemins d'accès appropriés leur sont fournis. Cependant, il montre le même «système de fichiers» et «monté sur» pour tous les chemins, car (je crois) c'est le seul point de montage (relatif à cesshfs
montage) dans la table de montage du noyau local.Autre chose: pas vraiment lié à la question, mais lié à une réponse précédente à la question.
Additionner les nombres avec un
awk
script (ou similaire), comme le font certaines réponses précédemment publiées, n'est pas une bonne idée lors de l'utilisation du-h
drapeau. En effet, une manipulation spéciale est requise. Vous ne pouvez pas simplement fairesize+=$2;
pour un champ qui est418M
sur une ligne et12G
sur une autre et en tirer quelque chose d'utile…Pour un exemple avec
awk
, ajouter500M
aux10.2G
rendements510.2 de quoi?
Il y a clairement un problème ici. Donc, juste comme astuce à retenir , lorsque vous effectuez un calcul (automatisé) sur la sortie de
df
(et d'autres qui peuvent utiliser des nombres «lisibles par l'homme» ) . Assurez-vous que vous n'utilisez pas l'-h
indicateur et que l'entrée du script de calcul est, à la place, normalisée (par exemple en octets, blocs, Ko ou autres) et effectuez la mise à l' échelle de l'affichage à la fin. Il n'est pas trop difficile, dans la plupart des langages de script et de programmation, d'ajouter quelque chose comme:où la valeur est en octets et le seuil est une valeur de l'ordre de 1000. Le résultat de cette méthode est que vous pouvez facilement la régler pour produire des valeurs imprimées (à l'exclusion du préfixe) dans une plage souhaitée et avec un nombre de chiffres significatifs pour votre choisir. Par rapport au cas des utilitaires standard avec
-h
commutateurs, où le format est souvent fixe.Bien sûr, ce calcul peut souvent être rendu plus efficace et / ou élégant, mais c'est une question pour la langue spécifique dans laquelle il est écrit. Franchement, s'il est utilisé dans un script utilisateur qui n'est exécuté que de temps en temps pour afficher de manière interactive certaines informations, l'efficacité n'est pas vraiment une préoccupation.
la source
Je pense que vous vouliez la somme des deux
size
etuse%
la source
size+=$1
) une approche awk simpliste à cette question. Cette méthode n'est vraiment pas compatible avec l'-h
option dedf
.Vous utiliseriez un outil comme
awk
:Où:
/^\/dev\/sd[ab]/
est un modèle pour filtrer uniquement les lignes commençant par/dev/sda
ou/dev/sdb
{ sum+=$5 }
ajouter le cinquième champ pour toutes les correspondances du modèle ci-dessusVous pouvez trouver des
awk
références utiles sur le wiki Awk.info .la source
la source
size
,% used
etavailable
. Pas seulement% utilisé. @Mdpc a également une meilleure méthode pour distinguer le lecteur, mais si vous voulez faire correspondre le modèle à awk, vous pouvez le faire:df -hl | awk '/sda2/{print $2,$5,$4}'
Si vous le vouliez avec des alertes, je le fais avec IFTTT, Telegram And WebHooks (qui est tout gratuit)
la source