Я столкнулся с проблемой на одном из моих серверов, работающих под управлением 16.04: на диске не осталось свободного места.
Я понятия не имею, что занимает это место. Есть ли команда для перечисления текущих размеров каталогов, чтобы я мог перемещаться и оказаться в каталоге, занимающем все пространство?
Как всегда в Linux, есть несколько способов выполнить эту работу. Однако, если вам нужно сделать это из CLI, это мой предпочтительный метод:
Я начинаю с запуска этого от имени root или с помощью sudo:
du -cha --max-depth=1 / | grep -E "M|G"
Grep предназначен для ограничения возвращаемых строк теми, которые возвращают значения в диапазоне мегабайт или Гигабайт. Если ваши диски достаточно велики, вы могли бы добавить |T а также включать терабайтные объемы. Вы можете получить некоторые ошибки на /proc, /sys, и/или /dev поскольку они не являются реальными файлами на диске. Тем не менее, он все равно должен предоставлять действительные выходные данные для остальных каталогов в корневом каталоге. После того, как вы найдете самые большие из них, вы можете запустить команду внутри этого каталога, чтобы сузить поиск виновника. Так, например, если /var был самым большим, что ты мог бы сделать вот так в следующий раз:
du -cha --max-depth=1 /var | grep -E "M|G"
Это должно привести вас к проблемным детям!
Дополнительные Соображения
В то время как приведенная выше команда, безусловно, сделает свое дело, у меня была некоторая конструктивная критика в комментариях ниже, которая указала на некоторые вещи, которые вы также могли бы включить.
То grep Предоставленное мной может привести к случайному возвращению значения "K", если имя каталога или файла имеет заглавную букву G или M. Если вы абсолютно не хотите, чтобы отображался какой-либо из K-значных каталогов, вы бы хотели, чтобы ваша игра с регулярными выражениями была более креативной и сложной. например. grep -E "^[0-9\.]*[MG]"
Если вы знаете, с каким диском проблема, и поверх него установлены другие диски, на которые вы не хотите тратить время, включая поиск, вы можете добавить -x флаг на ваш du команда. Описание справочной страницы этого флага:
-x, --one-file-system skip directories on different file systems
Вы можете отсортировать выходные данные du команда так, чтобы самое высокое значение было внизу. Просто добавьте это в конец команды: | sort -h
Уже есть много хороших ответов о способах определения того, какие каталоги занимают большую часть места. Если у вас есть основания полагать, что основной проблемой является несколько больших файлов, а не множество маленьких, вы могли бы использовать что-то вроде:
Я не знаю Ubuntu и не могу проверить свой ответ, но публикую здесь свой ответ, основанный на моем опыте работы администратором unix давным-давно.
Узнайте, в какой файловой системе не хватает места
df -h
будет перечислена вся файловая система, их размер и свободное пространство. Вы только напрасно тратите время, если исследуете файловые системы, в которых достаточно места. Предположим, что полная файловая система - это /myfilesystem. проверьте вывод df, есть ли файловые системы, смонтированные на поддиректорах /myfilesystems. Если это так, то следующие SPEP должны быть адаптированы к этой ситуации.
Узнайте, сколько места используется файлами этой файловой системы
du -sh /myfilesystem
Параметр -x может использоваться для гарантии того, что учитываются только файлы, входящие в состав этой файловой системы. Некоторые варианты Unix (например, Solaris) не знают опции -x для du. Затем вам придется использовать некоторые обходные пути, чтобы найти имя вашей файловой системы.
Теперь проверьте, соответствует ли размер видимых файлов примерно размеру используемого пространства, отображаемого df. Если это так, вы можете начать поиск больших файлов / каталогов файловой системы /myfilesystem для очистки.
чтобы найти самые большие подкаталоги каталога /.../dir, используйте
du -sk /.../dir/*|sort -n
опция -k заставляет du выводить sie в килобайтах без каких-либо единиц измерения. Это может быть значение по умолчанию в некоторых системах. Затем вы можете опустить эту опцию. Самые большие файлы/подкаталоги будут показаны в нижней части выходных данных.
Если вы нашли большой файл / каталог, который вам больше не нужен, вы можете удалить его соответствующим образом. Не беспокойтесь о небольших каталогах в верхней части выходных данных. Это не решит вашу проблему, если вы удалите их. Если у вас все еще недостаточно места, вы можете повторить шаг 4 в подкаталогах larges, которые отображаются в нижней части списка.
Но что произойдет, если вывод du не соответствует доступному пространству, отображаемому df?
Если вывод du больше, значит, вы пропустили подкаталог, в котором смонтирована другая файловая система. Если вывод du намного меньше, то файлы som не отображаются ни в одном каталоге, который проверяет du. Причины его феноменов могут быть разными.
некоторые процессы используют файл, который уже был удален. Поэтому эти файлы были удалены из каталога, и я не могу их видеть. Но для файловой системы их блоки все еще используются до тех пор, пока процессы не закроют файлы. Вы можете попытаться найти соответствующие процессы (например, с помощью lsof) и заставить их закрыть эти файлы (например, остановив приложение или завершив процессы). Или вы просто перезагрузите свой компьютер.
в каталогах есть файлы, которые больше не видны, потому что в одном из их родительских каталогов смонтирована другая файловая система. Итак, если у вас есть файл /myfilesysem /subdir /bigfile, а теперь вы монтируете другую файловую систему в /myfilesystem /subdir, то вы больше не сможете видеть этот файл и
du -shx /myfilesystem
сообщит значение, которое не содержит размер /myfilesystem/subdir/bigfile. Единственный способ узнать, существуют ли такие файлы, - это размонтировать /myfilesystem/subir и проверить с помощью
ls -la /myfilesystem/subdir
если он содержит файлы.
Могут существовать специальные типы файловых систем, которые используют/резервируют пространство на диске, которое не видно команде ls. Вам нужны специальные инструменты, чтобы отобразить это.
Помимо этого систематического способа использования команды du, вы можете использовать некоторые другие. Таким образом, вы можете использовать команду find для поиска файлов, размер которых превышает заданное вами значение, вы можете искать файлы, размер которых превышает заданное вами значение, или которые были недавно созданы или имеют специальное имя (например, *.log, core, *.trc). Но вы всегда должны выполнять df, как описано в 1, чтобы работать с правильной файловой системой
Ничего не могу сделать для строки инициализации, но вторая строка предполагает, что у salt-minion открыт файл, который был удален, и блоки диска будут возвращены, как только все дескрипторы файлов будут закрыты перезапуском службы.
Другие распространенные подозреваемые здесь включают syslog / rsyslog / syslog-ng, squid, apache или любой "тяжелый" процесс, выполняемый вашим сервером.
Я нахожу особенно ценным вывод таких инструментов, как Filelight, но, как и в вашем случае, на серверах обычно не установлен графический интерфейс, но du команда всегда доступна.
То, что я обычно делаю, это:
Написать du вывод в файл (du / > du_output.txt);
скопируйте файл на мой компьютер;
использовать DuFS чтобы "смонтировать" du вывод во временном каталоге; DuFS использует FUSE для создания виртуальной файловой системы (= на самом деле файлы не создаются, все это подделка) в соответствии с du выход;
запустите Filelight или другой графический инструмент в этом временном каталоге.
Отказ от ответственности: Я написал dufs - именно потому, что мне часто приходится выяснять, что занимает дисковое пространство на безголовых машинах.
wrt “no GUI, is a server”: you could install the GUI app (assuming you are happy with it and the support libraries being on a server) and use is on your local screen via X11-tunnelled-through-SSH with something like `export DISPLAY=:0.0; ssh -Y @
@KarlMorrison, как я также сказал в этом комментарии. Но я указывал на то, что если на сервере did присутствуют инструменты и библиотеки, то наличие сервера без прямого доступа к графическому интерфейсу не должно быть препятствием для их использования. Даже если сервер не является локальным, удаленное управление X по SSH хорошо работает для многих инструментов (хотя некоторые довольно плохо реагируют на ссылки с более высокой задержкой, поэтому в зависимости от того, насколько вы и сервер удалены друг от друга, и рассматриваемый инструмент, YMMV).
@ViktorMellgren Действительно, если у вас есть мусор на сервере, мой, однако, чрезвычайно мал, что в данном случае сделало его проблемой. Как бы верно вы ни говорили, в большинстве случаев вы могли бы что-то удалить