Як можна знайти, які файли займають 80% місця на веб-сервері Linux?


15

Привід постійно заповнюється. Ви знайшли всі запасні та випадкові файли, які можете. grep'd для файлів coredump і навіть видалив деякі непотрібні резервні копії ...

Який був би ваш наступний крок.

На фактичному розглянутому сервері розміщено 10 ГБ файлів веб-сайтів, а ОС не повинна займати більше 10 Гб, так як відстежити, чим заповнюється 50 ГБ (віртуальний) накопичувач?


Відповіді:



23

Звичайно, є більш досконалі способи, але я пам’ятаю той

du - max-глибина = 1 -h /

Тепер візьміть довідник, який займає більшу частину місця, (du --max-depth=1 -h /yourdir)і заглиблюйтесь, поки не знайдете свого винуватця.
Якщо ви хочете, щоб ваш вихід був відсортований за розміром і не піклується про читаний людиною формат, ви також можете це зробитиdu --max-depth=1 /your_dir | sort -n


Так. Я роблю майже те саме, що "du -S | сортування -n -r | менше". Я дуже хотів би побачити програму, яка виглядала як htop та cron'd як mlocate, але коли запустила, дала точну та сучасну інформацію про файли у вашій системі.
Гарет

1
Замість того, щоб починати з / на веб-сервер, спробуйте почати з http_root. Якщо успіху там немає, то можна піти на '/'. Каталог, який працює на "/", займе багато часу.
Саураб Барціяя

4

Я використовую баобаб програми Gnome. Ви можете запустити це на робочому столі, і ви зможете підключитися через SSH до сервера. Він показує легко читається графічну карту використання дискового простору. Він встановлений під Gnome як "Аналізатор використання диска"



2

df -k показує, які fs є проблемою. Тоді cd до dir верхнього рівня для нього та запустіть du -xk | сортувати -n | хвіст -25, це буде показувати верхній 25 dir, відсортований, для сонця 9 або раніше, замінити x на d.


Так, схоже на те, що я щойно згадував у відповіді @Marie Fischer. Навіщо використовувати -k (розмір блоку), а не -h для людини?
Гарет

-k використовується так, що всі розміри повідомляються в kb. Це корисно для іншого сортування, яке б поставило 10 кбіт до 20 Мб під час сортування.
Саураб Барціяя

1

Зауважте, що файли можна видалити під час запису, тому вони використовують дисковий простір під час процесу створення, але не мають імені файлу.

Це робить його непридатним для звичайних інструментів - ви можете використовувати lsof для дослідження, які процеси мають відкриті файли.


Я використовую /usr/sbin/lsof | grep deletedдля цього.
Кевін М

0

Якщо ви можете запустити програмне забезпечення в системі, то xdiskusage графічно покаже вам, які каталоги / файли харчуються вашим простором. Надзвичайно корисний.

Я вважаю, що KDE містить щось подібне.

Якщо це лише текст і ви не можете встановити додаткове програмне забезпечення, то творче використання du, ймовірно, потрапить і до вас.


0
  1. cd до домашнього каталогу веб-серверів (домашня директорія apache)
  2. запустіть команду "du -a | head -30 | sort -nr"
  3. це дасть вам 30 найбільших дискових файлів / каталогів
  4. ви можете їх знайти та видалити (якщо не корисно)

Це не спрацює, якщо ви не зміните порядок headі sort. Також слід скористатися функціями форматування.
kasperd

0

За допомогою наступних команд можна знайти файли чи папки, які займають занадто багато місця.

Наприклад, щоб відобразити найбільші 20 найпопулярніших каталогів у поточній папці, використовуйте наступний однокласник:

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

або:

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

Для топ-20 найбільших файлів у поточному каталозі (рекурсивно):

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

або з читаними для людини розмірами:

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

Друга команда, щоб правильно працювати на OSX / BSD (як sortне має -h), потрібно встановити sortз coreutils. Потім додайте папку для сміття у свою PATH.

Ви можете визначити ці команди як псевдоніми (наприклад, додати до файлів rc, таких як .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'

Потім запустіть bigабо big-filesвсередині папок, які, на вашу думку, мають місце (наприклад, в /home).


0

ось що я спільно розмовляв, щоб відстежити деякі негідні процеси на наших серверах баз даних: rabbitfinder

#!/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

це свого роду безглуздий і не дуже надійний, але працює таким чином:

  1. генерувати рекурсивний список дерев поточного каталогу
  2. зачекайте 5 секунд
  3. генерувати інший список
  4. порівняйте два виходи
  5. fuser файли, які змінили розмір і
  6. ps -lFp покаже файли, яким процесом належить

    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
    
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.