Podczas administrowania systemami Linux często mam problemy ze znalezieniem winowajcy po zapełnieniu partycji. Zwykle używam, du / | sort -nr
ale na dużym systemie plików zajmuje to dużo czasu, zanim jakiekolwiek wyniki zostaną zwrócone.
Ponadto zwykle udaje się to w uwypukleniu najgorszego przestępcy, ale często zdarzało mi się uciekać du
bez sort
bardziej subtelnych przypadków, a następnie musiałem przeszukiwać dane wyjściowe.
Wolałbym rozwiązanie wiersza poleceń, które opiera się na standardowych poleceniach Linuksa, ponieważ muszę administrować kilkoma systemami, a instalowanie nowego oprogramowania jest kłopotliwe (szczególnie gdy brakuje miejsca na dysku!)
command-line
partition
disk-usage
command
Stephen Kitt
źródło
źródło
Odpowiedzi:
Wypróbuj
ncdu
doskonały analizator użycia dysku z wiersza poleceń:źródło
sudo apt install ncdu
na Ubuntu dostaje to łatwo. To wspanialencdu -x
do zliczenia tylko plików i katalogów w tym samym systemie plików, co skanowany katalog.sudo ncdu -rx /
powinien dać czysty odczyt na największych katalogach / plikach TYLKO na dysku głównym. (-r
= tylko do odczytu,-x
= pozostań w tym samym systemie plików (co oznacza: nie przechodź przez inneNie idź prosto do
du /
. Użyj,df
aby znaleźć partycję, która cię rani, a następnie wypróbujdu
polecenia.Chciałbym spróbować
ponieważ drukuje rozmiary w „czytelnej dla człowieka formie”. Jeśli nie masz naprawdę małych partycji, wyszukiwanie katalogów w gigabajtach jest całkiem dobrym filtrem dla tego, czego chcesz. To zajmie ci trochę czasu, ale chyba, że masz ustawione limity, myślę, że tak właśnie będzie.
Jak @jchavannes wskazuje w komentarzach, wyrażenie może być bardziej precyzyjne, jeśli znajdziesz zbyt wiele fałszywych trafień. Włączyłem sugestię, która sprawia, że jest lepsza, ale wciąż istnieją fałszywie pozytywne wyniki, więc są tylko kompromisy (prostszy wyraŜenie, gorsze wyniki; bardziej skomplikowane i dłuŜsze wyraŜenie, lepsze wyniki). Jeśli masz zbyt wiele małych katalogów wyświetlanych w danych wyjściowych, odpowiednio dostosuj wyrażenie regularne. Na przykład,
jest jeszcze bardziej dokładny (nie zostaną wyświetlone żadne katalogi <1 GB).
Jeśli zrobić mieć kwot, można użyć
aby znaleźć użytkowników blokujących dysk.
źródło
grep '[0-9]G'
zawierało wiele fałszywych wyników pozytywnych, a także pomijało ułamki dziesiętne. To działało dla mnie lepiej:sudo du -h / | grep -P '^[0-9\.]+G'
[GT]
zamiast tego będziesz chciałG
du -h | sort -hr | head
Aby uzyskać pierwsze spojrzenie, skorzystaj z widoku „podsumowanie”
du
:Efektem jest wydrukowanie wielkości każdego z argumentów, tj. Każdego folderu głównego w powyższej sprawie.
Co więcej, zarówno GNU
du
, jak i BSDdu
mogą być ograniczone głębokością ( ale POSIXdu
nie może! ):GNU (Linux,…):
BSD (macOS,…):
Spowoduje to ograniczenie wyświetlania danych wyjściowych do głębokości 3. Obliczony i wyświetlany rozmiar jest oczywiście sumą pełnej głębokości. Mimo to ograniczenie głębokości wyświetlania drastycznie przyspiesza obliczenia.
Inną przydatną opcją jest
-h
(słowa na GNU i BSD, ale znów nie tylko na POSIXdu
) dla wyjścia „czytelnego dla człowieka” (tj. Przy użyciu KiB, MiB itp .).źródło
du
narzeka na-d
próbę--max-depth 5
zamiast.du -hcd 1 /directory
. -h dla czytelnego dla człowieka, c dla całości i d dla głębokości.du -hd 1 <folder to inspect> | sort -hr | head
du --max-depth 5 -h /* 2>&1 | grep '[0-9\.]\+G' | sort -hr | head
do filtrowania OdmowaMożesz także uruchomić następującą komendę, używając
du
:-s
Opcja podsumowuje i Wyświetla całkowity dla każdego argumentu.h
drukuje Mio, Gio itp.x
= pozostań w jednym systemie plików (bardzo przydatne).P
= nie podążaj za dowiązaniami symbolicznymi (które mogą na przykład powodować dwukrotne liczenie plików).Uważaj,
/root
katalog nie zostanie wyświetlony, musisz go uruchomić~# du -Pshx /root 2>/dev/null
(kiedyś bardzo się zmagałem, nie wskazując, że mój/root
katalog się zapełnił).Edycja: poprawiona opcja -P
źródło
du -Pshx .* * 2>/dev/null
+ katalogi ukryte / systemoweZnalezienie największych plików w systemie plików zawsze zajmuje dużo czasu. Z definicji musisz przemierzać cały system plików w poszukiwaniu dużych plików. Jedynym rozwiązaniem jest prawdopodobnie uruchomienie zadania cron na wszystkich systemach w celu przygotowania pliku z wyprzedzeniem.
Po drugie, opcja x du jest przydatna, aby powstrzymać du przed podążaniem za punktami montowania w innych systemach plików. To znaczy:
Pełne polecenie, które zwykle uruchamiam, to:
Te
-m
środki zwracają wyniki w megabajtach, asort -rn
będzie sortować wyniki największą liczbę pierwszą. Następnie możesz otworzyć plik use.txt w edytorze, a największe foldery (zaczynające się od /) będą na górze.źródło
-x
flagi!ncdu
- przynajmniej szybciej niżdu
lubfind
(w zależności od głębokości i argumentów) ..sudo du -xm / | sort -rn > ~/usage.txt
Zawsze używam
du -sm * | sort -n
, co daje posortowaną listę, ile zużywają podkatalogi bieżącego katalogu roboczego, w mebibajtach.Możesz także wypróbować Konquerora, który ma tryb „widoku rozmiaru”, który jest podobny do tego, co robi WinDirStat w systemie Windows: daje ci pełną reprezentację tego, które pliki / katalogi zajmują większość twojego miejsca.
Aktualizacja: w nowszych wersjach możesz także użyć opcji,
du -sh * | sort -h
które pokażą czytelne dla ludzi rozmiary plików i posortuj według tych. (liczby będą oznaczone literami K, M, G, ...)Dla osób szukających alternatywy dla rozmiaru pliku Konqueror w KDE3 może przyjrzeć się filelight, choć nie jest to tak przyjemne.
źródło
Używam tego dla 25 najgorszych przestępców poniżej bieżącego katalogu
źródło
-h
, prawdopodobnie zmieni efektsort -nr
polecenia - co oznacza, że sortowanie przestanie działać, a następniehead
polecenie przestanie działaćW poprzedniej firmie mieliśmy zadanie cron, które było uruchamiane przez noc i identyfikowaliśmy pliki o określonym rozmiarze, np
znajdź / rozmiar + 10000k
Możesz być bardziej wybiórczy w odniesieniu do przeszukiwanych katalogów i uważać na wszelkie zdalnie montowane dyski, które mogą przejść w tryb offline.
źródło
-x
opcji find, aby upewnić się, że nie znajdziesz plików na innych urządzeniach niż punkt początkowy polecenia find. Rozwiązuje to problem ze zdalnie montowanymi dyskami.Jedną z opcji byłoby uruchomienie polecenia du / sort jako zadania cron i przesłanie go do pliku, więc jest już dostępny, gdy jest potrzebny.
źródło
W wierszu poleceń myślę, że metoda du / sort jest najlepsza. Jeśli nie jesteś na serwerze, powinieneś spojrzeć na Baobab - Analizator użycia dysku . Uruchomienie tego programu również zajmuje trochę czasu, ale możesz łatwo znaleźć podkatalog głęboko, głęboko tam, gdzie są wszystkie stare ISO systemu Linux.
źródło
używam
i zmieniam maksymalną głębokość zgodnie z moimi potrzebami. Opcja „c” drukuje sumy dla folderów, a opcja „h” odpowiednio drukuje rozmiary w K, M lub G. Jak powiedzieli inni, nadal skanuje wszystkie katalogi, ale ogranicza dane wyjściowe w sposób, który łatwiej znaleźć duże katalogi.
źródło
Idę na sekundę
xdiskusage
. Ale dodam w notatce, że w rzeczywistości jest to du frontend i mogę odczytać wynik du z pliku. Możesz więc uruchomićdu -ax /home > ~/home-du
na swoim serwerzescp
plik z powrotem, a następnie przeanalizować go graficznie. Lub przeprowadź go przez ssh.źródło
Spróbuj wprowadzić wynik du do prostego skryptu awk, który sprawdza, czy rozmiar katalogu jest większy niż jakiś próg, jeśli tak, to go drukuje. Nie musisz czekać na przejście całego drzewa, zanim zaczniesz uzyskiwać informacje (w porównaniu z wieloma innymi odpowiedziami).
Na przykład poniżej przedstawiono katalogi, które zużywają więcej niż około 500 MB.
Aby uczynić powyższe nieco bardziej wielokrotnego użytku, możesz zdefiniować funkcję w swoim .bashrc (lub możesz zrobić z niego samodzielny skrypt).
Więc
dubig 200 ~/
szuka w katalogu domowym (bez podążania za symbolami poza urządzeniem) katalogów, które używają więcej niż 200 MB.źródło
du -k
du -kx $2 | awk '$1>'$(($1*1024))
(jeśli określisz tylko warunek aka wzorzec do awk, domyślną akcją jestprint $0
)du -kx / | awk '$1 > 500000'
du -kx / | tee /tmp/du.log | awk '$1 > 500000'
. Jest to bardzo pomocne, ponieważ jeśli twoje pierwsze filtrowanie okaże się bezowocne, możesz wypróbować inne takie wartościawk '$1 > 200000' /tmp/du.log
lub sprawdzić pełne dane wyjściowesort -nr /tmp/du.log|less
bez ponownego skanowania całego systemu plikówPodoba mi się stary dobry xdiskusage jako graficzna alternatywa dla du (1).
źródło
Wolę skorzystać z poniższych, aby uzyskać przegląd i przejść od tego ...
Spowoduje to wyświetlenie wyników z danymi wyjściowymi czytelnymi dla człowieka, takimi jak GB, MB. Zapobiegnie również przechodzeniu przez zdalne systemy plików. Ta
-s
opcja wyświetla tylko podsumowanie każdego znalezionego folderu, dzięki czemu możesz przejść do dalszych szczegółów, jeśli chcesz uzyskać więcej informacji o folderze. Należy pamiętać, że to rozwiązanie będzie wyświetlać tylko foldery, więc jeśli chcesz również pominąć gwiazdkę / po gwiazdce.źródło
Nie wspomniano tutaj, ale powinieneś również sprawdzić lsof w przypadku usuniętych / zawieszonych plików. Miałem usunięty plik tmp o pojemności 5,9 GB z wybieranej aplikacji do współpracy.
https://serverfault.com/questions/207100/how-can-i-find-phantom-storage-usage Pomógł mi znaleźć właściciela procesu wspomnianego pliku (cron), a następnie udało mi się
/proc/{cron id}/fd/{file handle #}
zmniejszyć plik zadaj pytanie, aby uzyskać początek ucieczki, rozwiąż ten problem, a następnie powtórz plik „”>, aby zwolnić miejsce i pozwolić cronowi z wdziękiem się zamknąć.źródło
Z terminala możesz uzyskać wizualną reprezentację użycia dysku za pomocą dutree
Jest bardzo szybki i lekki, ponieważ jest implementowany w Rust
Zobacz wszystkie szczegóły użytkowania na stronie internetowej
źródło
Dla wiersza poleceń du (i jego opcje) wydaje się najlepszym sposobem. DiskHog wygląda tak, jakby używa również informacji du / df z zadania cron, więc sugestia Petera jest prawdopodobnie najlepszą kombinacją prostoty i skuteczności.
( FileLight i KDirStat są idealne do GUI.)
źródło
Możesz użyć standardowych narzędzi, takich jak
find
isort
do analizy wykorzystania miejsca na dysku.Lista katalogów posortowana według ich wielkości:
Lista plików posortowana według ich wielkości:
źródło
Być może warto zauważyć, że
mc
(Midnight Commander, klasyczny menedżer plików w trybie tekstowym) domyślnie pokazuje tylko rozmiar i-węzłów katalogu (zwykle4096
), ale za pomocą CtrlSpacelub z menu Narzędzia możesz zobaczyć przestrzeń zajmowaną przez wybrany katalog w czytelnym dla człowieka format (np. niektóre podobne103151M
).Na przykład poniższe zdjęcie pokazuje pełny rozmiar waniliowych dystrybucji TeX Live z lat 2018 i 2017, podczas gdy wersje 2015 i 2016 pokazują tylko rozmiar i-węzła (ale mają naprawdę prawie 5 Gb każdy).
Oznacza to, że CtrlSpacenależy to zrobić jeden za drugim, tylko dla rzeczywistego poziomu katalogu, ale jest tak szybki i przydatny, gdy nawigujesz z
mc
tym, że być może nie będziesz potrzebowaćncdu
(że w rzeczywistości tylko w tym celu jest lepszy). W przeciwnym razie, można również uruchomićncdu
zmc
. bez wyjściamc
lub uruchomienia innego terminalu.źródło
Najpierw sprawdzam rozmiar katalogów, tak jak poniżej:
źródło
Jeśli wiesz, że duże pliki zostały dodane w ciągu ostatnich kilku dni (powiedzmy 3), możesz użyć polecenia find w połączeniu z „
ls -ltra
”, aby odkryć te ostatnio dodane pliki:To da ci tylko pliki („
-type f
”), a nie katalogi; tylko pliki z czasem modyfikacji w ciągu ostatnich 3 dni („-mtime -3
”) i wykonaj „ls -lart
” dla każdego znalezionego pliku („-exec
” część).źródło
Aby zrozumieć nieproporcjonalne wykorzystanie miejsca na dysku, często warto zacząć od katalogu głównego i przejrzeć niektóre z jego największych elementów podrzędnych.
Możemy to zrobić przez
To jest:
powiedzmy teraz, że / usr wydaje się zbyt duży
teraz, jeśli / usr / local jest podejrzanie duży
i tak dalej...
źródło
Użyłem tego polecenia, aby znaleźć pliki większe niż 100 Mb:
źródło
Miałem sukces w wyszukiwaniu najgorszych przestępców, którzy
du
przesyłali wyniki w postaci czytelnej dla człowiekaegrep
i dopasowując je do wyrażenia regularnego.Na przykład:
co powinno dać ci wszystko 500 megabajtów lub więcej.
źródło
du -k | awk '$1 > 500000'
. O wiele łatwiej jest zrozumieć, edytować i poprawiać za pierwszym razem.Jeśli chcesz prędkości, możesz włączyć przydziały w systemach plików, które chcesz monitorować (nie musisz ustawiać przydziałów dla żadnego użytkownika), i użyj skryptu, który używa polecenia quota, aby wyświetlić listę miejsca na dysku używanego przez każdego użytkownika. Na przykład:
dałoby ci użycie dysku w blokach dla konkretnego użytkownika w danym systemie plików. W ten sposób powinieneś być w stanie sprawdzić użycie w ciągu kilku sekund.
Aby włączyć przydziały, musisz dodać usrquota do opcji systemu plików w pliku / etc / fstab, a następnie prawdopodobnie zrestartować komputer, aby można było uruchomić quotacheck na bezczynnym systemie plików przed wywołaniem quotaon.
źródło
Oto niewielka aplikacja, która używa głębokiego próbkowania do znajdowania guzów w dowolnym dysku lub katalogu. Przechodzi dwa razy po drzewie katalogów, raz, aby je zmierzyć, a drugi raz wypisuje ścieżki do 20 „losowych” bajtów w katalogu.
Dane wyjściowe wyglądają następująco dla mojego katalogu Program Files:
Mówi mi, że katalog ma 7,9 GB, z czego
Wystarczy zapytać, czy któreś z nich można rozładować.
Mówi także o typach plików, które są rozproszone w systemie plików, ale razem stanowią okazję do zaoszczędzenia miejsca:
Pokazuje też wiele innych rzeczy, z którymi prawdopodobnie nie mogłem się obejść, takich jak obsługa „SmartDevices” i „ce” (~ 15%).
Zajmuje to czas liniowy, ale nie trzeba go często robić.
Przykłady rzeczy, które znalazł:
źródło
Miałem podobny problem, ale odpowiedzi na tej stronie nie były wystarczające. Znalazłem następującą komendę, która jest najbardziej użyteczna dla listy:
du -a / | sort -n -r | head -n 20
Który pokazałby mi 20 największych przestępców. Jednak pomimo tego, że to uruchomiłem, nie pokazało mi to prawdziwego problemu, ponieważ już usunąłem plik. Problem polegał na tym, że nadal działał proces odwołujący się do usuniętego pliku dziennika ... więc najpierw musiałem go zabić, a następnie miejsce na dysku pojawiło się jako wolne.
źródło
Możesz użyć DiskReport.net, aby wygenerować raport online o wszystkich dyskach.
Przy wielu uruchomieniach pokaże Ci wykres historii dla wszystkich twoich folderów, łatwy do znalezienia, co się powiększyło
źródło
Jest ładny darmowy wieloplatformowy darmowy program o nazwie JDiskReport, który zawiera GUI do zbadania, co zajmuje całą tę przestrzeń.
Przykładowy zrzut ekranu:
Oczywiście musisz ręcznie wyczyścić trochę miejsca, zanim będziesz mógł je pobrać i zainstalować lub pobrać na inny dysk (np. Pendrive USB).
(Skopiowane tutaj z tego samego autora odpowiedzi na pytanie duplikatu)
źródło