Диск постоянно пополняется. Вы отыскали все свободные и случайные файлы, какие только могли. grep'd для файлов coredump и даже удалил некоторые ненужные резервные копии ...
Каким будет ваш следующий шаг.
Фактический сервер, о котором идет речь, имеет 10 ГБ файлов веб-сайта, а ОС не должна занимать больше 10 ГБ, так как же отследить, что заполняет (виртуальный) диск на 50 ГБ?
Конечно, есть более сложные способы, но я помню
du --max-depth=1 -h /
Теперь возьмите каталог, который занимает больше всего места (du --max-depth=1 -h /yourdir)
и идите глубже, пока не найдете виновника.
Если вы хотите, чтобы ваш вывод был отсортирован по размеру и вам не нужен удобочитаемый формат, вы также можете сделать du --max-depth=1 /your_dir | sort -n
Я нахожу ncdu (http://dev.yorhel.nl/ncdu), чтобы быть весьма полезным для этого.
Я использую программу Gnome baobab. Вы можете запустить это на своем рабочем столе и подключиться к серверу через SSH. Он показывает легко читаемую графическую карту использования дискового пространства. Он устанавливается в Gnome как «Анализатор использования диска».
Дайте gt5 попытка.
df -k показывает, какие fs являются проблемой. Затем перейдите в каталог верхнего уровня и запустите du -xk | sort -n | tail -25 покажет первые 25 директорий, отсортированных, для sun 9 или ранее, замените x на d.
Обратите внимание, что файлы могут быть удалены во время записи, поэтому они используют дисковое пространство во время своего процесса создания, но не имеют имени файла.
Это делает невозможным его обнаружение с помощью обычных инструментов - вы можете использовать lsof, чтобы исследовать, какие процессы имеют открытые файлы.
Если вы можете запускать программное обеспечение в системе, тогда xdiskusage графически покажет вам, какие каталоги / файлы занимают ваше место. Очень полезно.
Я считаю, что в KDE есть нечто подобное.
Если это только текст и вы не можете установить дополнительное программное обеспечение, то творческое использование du
вероятно, также доставит вас туда.
Вы можете использовать следующие команды, чтобы найти, какие файлы или папки занимают слишком много места.
Например. чтобы отобразить 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
).
вот кое-что, что я собрал вместе, чтобы отследить некоторые мошеннические процессы на наших серверах баз данных: 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
это вроде как беспорядочно и не очень надежно, но работает так:
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