Jak znaleźć, które pliki zajmują 80% miejsca na serwerze z systemem Linux?


15

Napęd ciągle się zapełnia. Udało ci się znaleźć wszystkie zapasowe i losowe pliki, jakie możesz. grep'd dla plików z rdzeniem, a nawet usunął niektóre niepotrzebne kopie zapasowe ...

Jaki byłby twój następny ruch?

Właściwy serwer, o którym mowa, ma 10 GB plików witryny, a system operacyjny nie powinien zajmować więcej niż 10 GB, więc w jaki sposób można śledzić, co wypełnia dysk 50 GB (wirtualny)?


Odpowiedzi:



23

Z pewnością istnieją bardziej skomplikowane sposoby, ale pamiętam tylko to

du - max-depth = 1 -h /

Teraz weź katalog, który zajmuje najwięcej miejsca (du --max-depth=1 -h /yourdir)i idź głębiej, aż znajdziesz winowajcę.
Jeśli chcesz posortować wyniki według rozmiaru i nie zależy ci na formacie czytelnym dla człowieka, możesz to zrobićdu --max-depth=1 /your_dir | sort -n


Tak. Robię prawie to samo „du -S | sort -n -r | less”. Naprawdę chciałbym zobaczyć program, który wyglądałby jak htop i cron, chciałbym mlocate, ale po uruchomieniu dostarczył ci dokładnych i współczesnych informacji o plikach w twoim systemie.
Gareth

1
Zamiast zaczynać od / na serwerze WWW spróbuj rozpocząć od http_root. Jeśli nie ma sukcesu, można wybrać „/”. Katalog działający na „/” zajmie dużo czasu.
Saurabh Barjatiya

4

Używam baobabu z programu Gnome. Możesz uruchomić to na komputerze i połączyć się przez serwer SSH. Pokazuje czytelną graficzną mapę wykorzystania miejsca na dysku. Jest zainstalowany pod Gnome jako „Disk Usage Analyzer”



2

df -k pokazuje, który z fs jest problemem. Następnie przejdź do katalogu najwyższego poziomu i uruchom du -xk | sort -n | ogon -25 pokaże to 25 najlepszych katalogów, posortowanych, dla słońca 9 lub wcześniejszego, zamień x na d.


Tak, podobnie do tego, co właśnie wspomniałem w odpowiedzi @Marie Fischer. Dlaczego warto używać -k (rozmiar bloku) zamiast -h dla człowieka?
Gareth

-k jest używane, aby wszystkie rozmiary były zgłaszane w kb. Jest to przydatne do sortowania, ponieważ sortowanie w czasie sortowania umieściłoby 10 KB przed 20 MB.
Saurabh Barjatiya

1

Pamiętaj, że pliki można usunąć podczas zapisywania, więc używają miejsca na dysku podczas procesu tworzenia, ale nie mają nazwy pliku.

To sprawia, że ​​nie można go znaleźć za pomocą zwykłych narzędzi - możesz użyć lsof do sprawdzenia, które procesy mają otwarte pliki.


Używam /usr/sbin/lsof | grep deletedtego, aby to zdobyć.
Kevin M

0

Jeśli możesz uruchomić oprogramowanie w systemie, xdiskusage wyświetli graficznie, które katalogi / pliki zjadają twoje miejsce. Niezwykle przydatny.

Wierzę, że KDE zawiera coś podobnego.

Jeśli jest to tylko tekst i nie możesz zainstalować dodatkowego oprogramowania, to kreatywne korzystanie z niego duprawdopodobnie również Cię tam zapewni.


0
  1. cd do katalogu domowego serwerów WWW (katalog domowy apache)
  2. uruchom polecenie „du -a | head -30 | sort -nr”
  3. da ci 30 największych plików / katalogów zużywających dysk
  4. możesz je znaleźć i usunąć (jeśli nie jest to przydatne)

To nie zadziała, chyba że zmienisz kolejność headi sort. Powinieneś także skorzystać z funkcji formatowania.
kasperd

0

Możesz użyć następujących poleceń, aby znaleźć pliki lub foldery zajmujące zbyt dużo miejsca.

Np. Aby wyświetlić największe 20 najlepszych katalogów w bieżącym folderze, użyj następującego jednowierszowego:

du -ah . | sort -rh | head -20

lub:

du -a . | sort -rn | head -20

W przypadku 20 największych plików w bieżącym katalogu (rekurencyjnie):

ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20

lub w rozmiarach czytelnych dla ludzi:

ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20

Drugie polecenie, aby poprawnie działać na OSX / BSD (jak sortnie ma -h), musisz zainstalować sortz coreutils. Następnie dodaj folder bin do swojego PATH.

Możesz zdefiniować te polecenia jako aliasy (np. Dodaj do swoich plików rc , takich jak .bash_profile):

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'

Następnie uruchom biglub big-fileswewnątrz folderów, które według ciebie mają miejsce (np. W /home).


0

oto coś, co połączyłem, aby wyśledzić niektóre nieuczciwe procesy na naszych serwerach baz danych: królikfinder

#!/bin/sh
tree -s -f > /tmp/out1 && sleep 5 && tree -s -f > /tmp/out2; diff /tmp/out1 /tmp/out2 | egrep "\|--" | awk -F[ '{print $2}' | awk -F] '{print $2 }' | sort | uniq | xargs fuser -f | xargs ps -lFp

jest trochę kludgey i niezbyt solidny, ale działa w ten sposób:

  1. wygeneruj rekurencyjną listę drzew bieżącego katalogu
  2. poczekaj 5 sekund
  3. wygeneruj kolejną listę
  4. porównaj dwa wyjścia
  5. utrwal pliki, które zmieniły rozmiar i
  6. ps -lFp pokaże plikom, który proces jest ich właścicielem

    user@poseidon:~$ tree -s -f > /tmp/out1 && sleep 5 && tree -s -f > /tmp/out2; diff /tmp/out1 /tmp/out2 | egrep "\|--" | awk -F[ '{print $2}' | awk -F] '{print $2 }' | sort | uniq | xargs fuser -f | xargs ps -lFp
    ./tmp/output:       
    F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN    RSS PSR STIME TTY          TIME CMD
    0 R 1000     14310 14275 23  80   0 -  1072 -        748   1 22:19 pts/2    00:00:06 dd if /dev/zero of ./output bs 1024 count 10000000
    
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.