Как определить, какие файлы занимают 80% пространства на веб-сервере Linux?


15

Драйв постоянно наполняется. Вы выследили все запасные и случайные файлы, которые можете. grep'd для coredump файлов и даже удалил некоторые ненужные резервные копии ...

Каким будет ваш следующий ход.

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


Ответы:


9

Я нахожу ncdu ( http://dev.yorhel.nl/ncdu ) , чтобы быть весьма полезным для этого.


Отлично. Блестящий интерфейс и возможность манипулировать файлами изнутри программы. Ура!
Гар

23

Конечно, есть более сложные способы, но я помню,

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

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


Да. Я делаю то же самое "du -S | sort -n -r | less". Мне бы очень хотелось увидеть программу, которая выглядела бы как htop, а cron - как mlocate, но при запуске дала вам точную и современную информацию о файлах в вашей системе.
Гарет

1
Вместо запуска с / на веб-сервере попробуйте начать с http_root. Если там нет успеха, тогда можно перейти к «/». Работа директории du на '/' займет много времени.
Саураб Баржатия

4

Я использую программу Gnome Baobab. Вы можете запустить это на своем рабочем столе, и вы можете подключиться через SSH к серверу. Он показывает легко читаемую графическую карту использования дискового пространства. Он установлен под Gnome как «Анализатор использования диска»



2

df -k показывает, какие fs являются проблемой. Затем перейдите на верхний уровень dir и запустите du -xk | сортировать -n | tail -25 это покажет верхний 25 dir, отсортированный, для sun 9 или ранее, замените x на d.


Да, похоже на то, что я только что упомянул в ответе @Marie Fischer. Зачем использовать -k (размер блока), а не -h для человека?
Гарет

-k используется для того, чтобы все размеры указывались в кб. Это полезно для сортировки, иначе сортировка поместит 10 КБ до 20 МБ при сортировке.
Саураб Баржатия

1

Обратите внимание, что файлы могут быть удалены во время записи, поэтому они используют дисковое пространство во время выполнения процесса создания, но не имеют имени файла.

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


Я использую, /usr/sbin/lsof | grep deletedчтобы получить это.
Кевин М,

0

Если вы можете запустить программное обеспечение в системе, то xdiskusage графически покажет вам, какие каталоги / файлы занимают ваше место. Очень полезно.

Я считаю, что KDE содержит нечто подобное.

Если он только текстовый, и вы не можете установить дополнительное программное обеспечение, то творческое использование du, вероятно, поможет вам в этом.


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

Это не сработает, если вы не измените порядок headи sort. Также вы должны использовать возможности форматирования.
Касперд

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. Затем добавьте папку bin в свой 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. закрепить файлы, которые изменили размер и
  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.