y a-t-il une commande dans bash qui peut vous donner le nombre total de numéros d’espace disque / disque dur.
Je sais que la commande df est très utile mais la sortie est trop verbeuse:
# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda4 721G 192G 492G 29% / tmpfs 129G 112K 129G 1% /dev/shm /dev/sda1 194M 92M 93M 50% /boot /dev/sdj1 917G 547M 870G 1% /data10 /dev/sdk1 917G 214G 657G 25% /data11 /dev/sdl1 917G 200M 871G 1% /data12 /dev/sdm1 917G 200M 871G 1% /data13 /dev/sdn1 917G 200M 871G 1% /data14 /dev/sdo1 917G 200M 871G 1% /data15 /dev/sdp1 917G 16G 855G 2% /data16 /dev/sdb1 917G 4.6G 866G 1% /data2 /dev/sdc1 917G 74G 797G 9% /data3 /dev/sdd1 917G 200M 871G 1% /data4 /dev/sde1 917G 200M 871G 1% /data5 /dev/sdf1 917G 200M 871G 1% /data6 /dev/sdg1 917G 764G 107G 88% /data7 /dev/sdh1 917G 51G 820G 6% /data8 /dev/sdi1 917G 19G 853G 3% /data9 /dev/sda2 193G 53G 130G 30% /home cm_processes 129G 46M 129G 1% /var/run/cloudera-scm-agent/process
Je veux essentiellement “16To” à la fin, y at-il une commande à scope de main ou je dois écrire un programme pour calculer le disque total en fonction de la sortie de df.
Qu’en est-il de:
df --total
Astuce: regardez d’abord la page de manuel: man df
. J’ai du mal ces jours-ci à trouver des aspects pour un programme qui n’ont pas été implémentés par un joli drapeau. Les utilisateurs de Linux semblent simplement savoir ce que les programmeurs veulent / ont besoin.
Ou si vous ne voulez que le total:
df --total | tail -n 1
Et si vous voulez le spécifier dans une taille de bloc spéciale (comme TB
), vous pouvez définir le drapeau -B
:
df --total -BT | tail -n 1
Et au cas où vous ne seriez intéressé que par la taille totale (par exemple, vous souhaitez utiliser le résultat dans un autre programme bash
):
df --total -BT | tail -n 1 | sed -E 's/total *([^ ]*).*/\1/'
La réponse de CommuSoft est plus agréable, mais voici une autre solution utilisant awk:
df -m | awk '{ SUM += $2} END { print SUM/1024/1024"TB" }'
L’utilisation de l’option -m
permet d’afficher les résultats de df
dans la même unité (Mo). Une division simple peut traduire facilement le résultat en TB.
Une autre solution utilisant awk
. Cela imprimera les lignes d’en-tête et de total:
df --total -h | awk '!/^\//'
awk
commande awk
imprime toutes les lignes sauf celles qui commencent par character /
. df
avec -h
ou --human-readable
tailles d’impression --human-readable
en puissances de 1024 (par exemple, 1023M). Le résultat ressemblera à ceci:
Filesystem Size Used Avail Use% Mounted on total 3.9T 1.7T 2.3T 42% -
Comme Mounted on
field est inutile, vous pouvez le supprimer en ajoutant un sed
à la commande précédente:
$ df --total -h | awk '!/^\//' | sed -E 's/Mounted on|\s-//' Filesystem Size Used Avail Use% total 3.9T 1.7T 2.3T 42%