Aby dfobliczyć sumy, użyj --totalsopcji. Jeśli chcesz, aby sumy były tylko dla niektórych wybranych dysków, podaj je jako argumenty.
Przykłady (i dane wyjściowe z mojego komputera)
Jest to suma dla wszystkich lokalnych montowań:
$ df --total -hl
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 14G 12G 2,1G 85% /
none 490M 660K 489M 1% /dev
none 497M 1,5M 495M 1% /dev/shm
none 497M 260K 496M 1% /var/run
none 497M 0 497M 0% /var/lock
/dev/sda1 3,7G 418M 3,3G 12% /fastdisk
total 19G 12G 7,3G 62%
Ograniczenie do kilku dysków (zwróć uwagę, że jeśli podana ścieżka nie jest dokładnym punktem montowania, używany jest najbliższy zawierający punkt montowania [patrz uwaga na końcu] ):
$ df -hl --total /home /fastdisk
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 14G 12G 2,1G 85% /
/dev/sda1 3,7G 418M 3,3G 12% /fastdisk
total 17G 12G 5,3G 69%
lub używając devnazw:
$ df -hl --total /dev/sda1 /dev/sdb1
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 3,7G 418M 3,3G 12% /fastdisk
/dev/sdb1 14G 12G 2,1G 85% /
total 17G 12G 5,3G 69%
Dalsze dostosowanie
Jeśli chcesz wyświetlić listę wszystkich montowań oprócz „specjalnych”, możesz użyć -xopcji wykluczania według typu partycji. (Użyj -Topcji, aby wyświetlić typy.)
Osobiście do celów interaktywnych używam następującego aliasu bash (dodanego do ~/.bash_aliases), aby wykluczyć montaże „niefizyczne”.
alias df='df -h -x devtmpfs -x tmpfs -x debugfs'
Uwaga
Określenie ścieżek w punktach podłączenia może czasem dać wyniki w innej formie, określając dokładną ścieżkę do punktu podłączenia. Na przykład na laptopie używam sshfsdo montowania (lokalnego) serwera plików.
df -h ~/.server-root/ ~/.server-root/disks/A ~/.server-root/disks/B
Filesystem Size Used Avail Use% Mounted on
johan@server:/ 185G 58G 118G 33% /home/johan/.server-root
johan@server:/ 1,9T 637G 1,2T 35% /home/johan/.server-root
johan@server:/ 1,8T 1,1T 757G 59% /home/johan/.server-root
Serwer root ( /) jest zamontowany na ~/.server-root. Jednak na serwerze dyski są montowane /disks/*, o których df(na laptopie) nie wiadomo.
Oczywiście dfmożna wymienić użycie dysku na różnych mocowaniach na serwerze, jeśli podano odpowiednie ścieżki. Pokazuje jednak ten sam „system plików” i „zamontowany” dla wszystkich ścieżek, ponieważ (uważam) jest to jedyny punkt montowania (związany z tym sshfsmontowaniem) w lokalnej tabeli montowania jądra.
Kolejna sprawa: nie bardzo związana z pytaniem, ale związana z poprzednią odpowiedzią na pytanie.
Sumowanie liczb za pomocą awkskryptu (lub podobnego), podobnie jak niektóre wcześniej opublikowane odpowiedzi, nie jest dobrym pomysłem podczas korzystania z -hflagi. Jest tak, ponieważ wymagana jest specjalna obsługa. Nie możesz po prostu zrobić size+=$2;dla pola, które jest 418Mw jednym rzędzie i 12Gw drugim, i uzyskać z niego coś pożytecznego…
Na przykład z awkdodawaniem 500Mdo 10.2Gwydajności
$ echo -e '500M\n10.2G' | awk '{size+=$1;} END{print size;}'
510.2
510,2 czego?
Tutaj jest wyraźnie problem. Tak więc, jako wskazówka do zapamiętania , kiedy wykonujemy (automatyczne) obliczenia na wyjściu df (i innych, które mogą używać liczb „czytelnych dla człowieka” ) . Upewnij się, że nie używasz -hflagi i że dane wejściowe do skryptu obliczeniowego są znormalizowane (na przykład do bajtów, bloków, KB itp.) I wykonaj „skalowanie wyświetlania” na końcu. W większości języków skryptowych i programowych nie jest trudno dodać coś takiego:
If value < threshold Then
print (value),"B"
Else If value < 1024*threshold Then
print (value/1024),"kB"
Else If value < 1024*1024*threshold Then
print (value/1024/1024),"MB"
(and so on...)
gdzie wartość jest w bajtach, a próg jest wartością rzędu 1000. Rezultatem tej metody jest to, że można ją łatwo dostroić, aby uzyskać wydrukowane wartości (z wyłączeniem prefiksu) w pożądanym zakresie i za pomocą szeregu znaczących cyfr wybierając W porównaniu do przypadku ze standardowymi narzędziami z -hprzełącznikami, w których format jest często ustalony.
Oczywiście obliczenia te często można uczynić bardziej wydajnymi i / lub eleganckimi, ale jest to pytanie dotyczące konkretnego języka, w którym jest napisany. Szczerze mówiąc, jeśli jest ono używane w skrypcie użytkownika uruchamianym tylko od czasu do czasu w celu interaktywnego przeglądania trochę informacji, wydajność tak naprawdę nie stanowi problemu.