Dane wyjściowe można nieco łatwiej przeanalizować, korzystając z -Popcji, która zapewni:
Informacje o każdym systemie plików są zawsze drukowane dokładnie w jednym wierszu; urządzenie do montowania nigdy nie jest samo w sobie ustawiane na linii. Oznacza to, że jeśli nazwa urządzenia do montowania ma więcej niż 20 znaków (np. W przypadku niektórych montowań sieciowych), kolumny nie są wyrównane.
To znacznie ułatwia uzyskanie dostępnej wolnej przestrzeni:
$ df -Ph.| tail -1| awk '{print $4}'
( -hużywa megabajtów, gigabajtów itd. Jeśli twój system go nie ma, używaj -ktylko dla kilobajtów).
Jeśli przekażemy dfścieżkę, zwróci tylko 2 wiersze: wiersz nagłówka, a następnie dane o systemie plików, który zawiera ścieżkę. Możemy użyć ogona, aby złapać tylko drugi rząd. Wiemy, że dostępne miejsce znajduje się w czwartej kolumnie, więc sięgamy po to awk. Wszystko to można zrobić za pomocą awk:
@SiegeX: Zgadzam się, że to wszystko awkjest lepsze. Dołączyłem dłuższe polecenie, ponieważ chciałem mieć przykład tego, jak można zbudować łańcuch prostych poleceń, aby zrobić coś bardziej skomplikowanego. Zaktualizowałem odpowiedź, aby uwzględnić Twoje ulepszenie.
Steven D
-Pjest standardem ( Pdotyczy POSIX). Ale -hjest rozszerzeniem GNU (istnieje także w niektórych innych systemach, ale np. W OpenBSD jest niekompatybilny -P).
Gilles „SO- przestań być zły”
Możesz to zrobić bez użycia przełącznika --output = dostępność: df -h --output=avail . | tail -1
Floyd
„Możesz zoptymalizować swoje polecenie”. Nie całkiem. Uruchomienie obu potoków 10 000 razy (jak w time { I=0; while [ $I -lt 10000 ]; do df -Ph . | awk 'NR==2 {print $4}' > /dev/null; ((I++)); done }) nie ujawnia żadnej znaczącej różnicy prędkości, co nie jest zadziwiające - wywoływanie tailnie jest drogie i awkoszczędza się przeskakiwania do końca danych wejściowych ... Mogła być różnica na PDP-11 ...
David Tonhofer
10
Jak o zrobieniu df -h .. Zapewni to dostępne wolne miejsce na partycji, w której znajduje się bieżący katalog roboczy.
Mały przykład:
/usr/local/nagios/libexec # df -h .FilesystemSizeUsedAvailUse%Mounted on
/dev/mapper/vg00-lvol1
9.9G6.1G3.4G65%/
du -h
?Odpowiedzi:
Dane wyjściowe można nieco łatwiej przeanalizować, korzystając z
-P
opcji, która zapewni:To znacznie ułatwia uzyskanie dostępnej wolnej przestrzeni:
(
-h
używa megabajtów, gigabajtów itd. Jeśli twój system go nie ma, używaj-k
tylko dla kilobajtów).Jeśli przekażemy
df
ścieżkę, zwróci tylko 2 wiersze: wiersz nagłówka, a następnie dane o systemie plików, który zawiera ścieżkę. Możemy użyć ogona, aby złapać tylko drugi rząd. Wiemy, że dostępne miejsce znajduje się w czwartej kolumnie, więc sięgamy po toawk
. Wszystko to można zrobić za pomocąawk
:lub wiele innych zestawów filtrów .
źródło
$PWD
zamiast zastępowania poleceń i eliminując potrzebę tail:df -Ph $PWD | awk 'NR==2{print $4}'
awk
jest lepsze. Dołączyłem dłuższe polecenie, ponieważ chciałem mieć przykład tego, jak można zbudować łańcuch prostych poleceń, aby zrobić coś bardziej skomplikowanego. Zaktualizowałem odpowiedź, aby uwzględnić Twoje ulepszenie.-P
jest standardem (P
dotyczy POSIX). Ale-h
jest rozszerzeniem GNU (istnieje także w niektórych innych systemach, ale np. W OpenBSD jest niekompatybilny-P
).df -h --output=avail . | tail -1
time { I=0; while [ $I -lt 10000 ]; do df -Ph . | awk 'NR==2 {print $4}' > /dev/null; ((I++)); done }
) nie ujawnia żadnej znaczącej różnicy prędkości, co nie jest zadziwiające - wywoływanietail
nie jest drogie iawk
oszczędza się przeskakiwania do końca danych wejściowych ... Mogła być różnica na PDP-11 ...Jak o zrobieniu
df -h .
. Zapewni to dostępne wolne miejsce na partycji, w której znajduje się bieżący katalog roboczy.Mały przykład:
źródło
W bajtach:
Czytelny dla człowieka:
lub
lub
źródło