Пространство хостинга заканчивается [dублировать]

У меня возникла проблема на одном из моих серверов с 16.04: осталось свободное место.

Я понятия не имею, что занимает пространство. Есть ли команда для перечисления текущих размеров каталога, поэтому я могу пересечься и попасть в каталог, занимая все пространство?

54
задан 5 May 2017 в 17:02

36 ответов

Если вы также заинтересованы в том, чтобы не использовать команду, вот приложение: Filelight

Позволяет быстро визуализировать, что использует дисковое пространство в любой папке.

Filelight

6
ответ дан 24 July 2018 в 17:02
  • 1
    Это сервер I SSH, без GUI. – Karl Morrison 6 May 2017 в 12:10
  • 2
    @KarlMorrison Я думаю, что есть способы запуска GUI-программ по ssh, но это идея позже, когда у вас есть место для установки пакетов – Xen2050 7 May 2017 в 02:54
  • 3
    @ Давид. О да, я пытаюсь уйти от этого. Это было необходимо на другой платформе, которую я использовал. Я исправлю этот комментарий. – Mark Yisri 5 June 2017 в 14:29
  • 4
    @Karl да, легко, если X уже установлен на клиенте: ssh -X <your host>, а затем запустите вашу программу из командной строки – Mark Yisri 5 June 2017 в 14:30
  • 5
    @MarkYisri - это то, что вам нужно установить программу и ее зависимости. И в случае с Filelight требуется, по крайней мере, KDElibs и Qt, которые не очень малы. См. эта страница для пакета файлов Ubuntu filelight , обратите внимание на то, сколько у него зависимостей. – Ruslan 4 July 2017 в 18:10

Уже есть много хороших ответов о том, как найти каталоги, занимающие большую часть пространства. Если у вас есть основания полагать, что основная проблема состоит из нескольких больших файлов, а не для многих небольших, вы можете использовать что-то вроде find / -size +10M.

10
ответ дан 24 July 2018 в 17:02

Я нахожу особенно ценным вывод таких инструментов, как Filelight, но, как и в вашем случае, на серверах обычно отсутствует GUI, но команда du всегда доступна.

То, что я обычно делаю is:

записать вывод du в файл (du / > du_output.txt); скопируйте файл на мою машину; используйте DuFS для «монтирования» вывода du во временном каталоге; DuFS использует FUSE для создания виртуальной файловой системы (= файлы фактически не созданы, это все подделка) в соответствии с выходом du; запустите Filelight или другой инструмент GUI в этом временном каталоге.

Отказ от ответственности: я написал dufs - именно потому, что мне часто приходится выяснять, какое пространство на болоте на безголовых машинах.

2
ответ дан 24 July 2018 в 17:02
  • 1
    Вы можете просто отсортировать -n du_output.txt – Zan Lynx 7 May 2017 в 21:33
  • 2
    Я нахожу графическое отображение используемого пространства более интуитивным. – Matteo Italia 7 May 2017 в 21:50

Я не знаю Ubuntu и не могу проверить свой ответ, но после этого напишу здесь свой ответ, основанный на моем опыте как администратор unix давно.

Узнайте, какая файловая система заканчивается в пространстве df -h будут перечислены все файловые системы, их размер и их свободное пространство. Вы просто теряете время, если исследуете файловые системы, у которых достаточно места. Предположим, что полная файловая система - это / myfilesystem. проверьте выход df, если есть файловые системы, установленные на поддиректорах / myfilesystems. Если это так, следующие изменения должны быть адаптированы к этой ситуации. Узнайте, сколько мест используется файлами этой файловой системы du -sh /myfilesystem . Параметр -x может использоваться, чтобы гарантировать, что учитываются только файлы, входящие в эту файловую систему. Некоторые Unix-варианты (например, Solaris) не знают опции -x для du. Затем вы должны использовать некоторые обходные пути, чтобы найти дю файловой системы. Теперь проверьте, является ли дю видимых файлов примерно размером используемого пространства, отображаемого df. Если это так, вы можете начать поиск больших файлов / каталогов файловой системы / myfilesystem для очистки. для поиска самых больших подкаталогов каталога /.../dir используйте du -sk /.../dir/*|sort -n параметр -k заставляет выводить sie в килобайте без какой-либо единицы. Это может быть значение по умолчанию для некоторых систем. Тогда вы можете опустить эту опцию. Самые большие файлы / подкаталоги будут показаны внизу вывода. Если вы нашли большой файл / каталог, который вам больше не нужен, вы можете удалить его соответствующим образом. Не беспокойтесь о небольших каталогах в верхней части вывода. Он не решит вашу проблему, если вы их удалите. Если у вас все еще недостаточно места, вы можете повторить шаг 4 в больших подкаталогах, которые отображаются в нижней части списка.

Но что произошло, если выход du не является приблизительно доступным пространством, отображаемым df?

Если выход du больше, вы пропустили подкаталог, в котором монтируется другая файловая система. Если выход du намного меньше, то som-файлы не отображаются ни в одной директории, которую проверяет. Для его явлений могут быть разные причины.

Узнайте, в какой файловой системе пробегает пробел. [F1] отобразит всю файловую систему, ее размер и свободное пространство. Вы просто теряете время, если исследуете файловые системы, у которых достаточно места. Предположим, что полная файловая система - это / myfilesystem. проверьте выход df, если есть файловые системы, установленные на поддиректорах / myfilesystems. Если это так, следующие изменения должны быть адаптированы к этой ситуации.

Узнайте, какая файловая система закончила пространство

du -shx /myfilesystem сообщит значение, которое не содержит размер / myfilesystem / subdir / большой_файл. Единственный способ узнать, существуют ли такие файлы, это размонтировать / myfilesystem / subir и проверить с помощью ls -la /myfilesystem/subdir

список всех файловых систем, их размер и их свободное пространство. Вы просто теряете время, если исследуете файловые системы, у которых достаточно места. Предположим, что полная файловая система - это / myfilesystem. проверьте выход df, если есть файловые системы, установленные на поддиректорах / myfilesystems. Если это так, следующие изменения должны быть адаптированы к этой ситуации.

Узнайте, сколько пространства используется файлами этой файловой системы du -sh /myfilesystem . Параметр -x может использоваться, чтобы гарантировать, что только файлы, являются членами этой файловой системы. Некоторые Unix-варианты (например, Solaris) не знают опции -x для du. Затем вы должны использовать некоторые обходные пути, чтобы найти дю файловой системы.

есть файлы в каталогах, которые больше не видны, потому что в одном из своих родительских каталогов монтируется другая файловая система. Поэтому, если у вас есть файл / myfilesysem / subdir / bigfile и теперь монтируйте другую файловую систему в / myfilesystem / subdir, вы больше не видите этот файл и

9
ответ дан 24 July 2018 в 17:02
  • 1
    На занятом сервере вы не можете всегда отключать все. Но вы можете привязать верхний каталог к ​​временному местоположению, и он не будет включать в себя другие монтирования и разрешит доступ к скрытым файлам. – Zan Lynx 7 May 2017 в 21:25
  • 2
    Перед systemd у меня часто возникали сбои монтирования, что приводило к заполнению / монтированием мусора. Запись резервной копии в / mnt / backup без подключенного USB-накопителя. Теперь я убеждаюсь, что эти единицы задания имеют требования к монтированию. – Zan Lynx 7 May 2017 в 21:30
  • 3
    @ZanLynx Спасибо, я никогда не слышал о bind mounts до – miracle173 8 May 2017 в 14:01
  • 4
    @ZanLynx: Не только на занятых серверах. Представьте, что вы /tmp в отдельной файловой системе (например, tmpfs) и что-то создали файлы в /tmp, прежде чем она стала точкой монтирования в другую файловую систему. Теперь эти файлы находятся в корневой файловой системе, затененных точкой монтирования, и вы не можете получить к ним доступ без перезагрузки в режим восстановления (который не обрабатывает /etc/fstab) или, как вы предлагаете, привязки. – David Foerster 3 June 2017 в 19:58

На самом деле не ответ, но добавление.

Вам тяжело не хватает места и не удается установить ncdu из ответа @erman.

Некоторые предложения

sudo apt clean all для удаления пакетов, которые вы уже загрузили. SAFE sudo rm -f /var/log/*gz файлы журнала очистки более чем через неделю или две - не будут удалять более новые / текущие журналы. MOSTLY SAFE sudo lsof | grep deleted перечисляет все открытые файлы, но фильтрует их до тех, которые были удалены с диска. FAIRLY SAFE sudo rm /tmp/* удаляет некоторые временные файлы - если что-то их использует, вы можете нарушить процесс. НЕ ДЕЙСТВИТЕЛЬНО, ЧТО БЕЗОПАСНО

Чтобы `lsof можно было бы возвращать такие строки:

server456 ~ $ lsof | grep deleted init 1 root 9r REG 253,0 10406312 3104 /var/lib/sss/mc/initgro ups (deleted) salt-mini 4532 root 0r REG 253,0 17 393614 /tmp/sh-thd-1492991421 (deleted)

Не может многое сделать для строки init, но вторая строка предполагает, что соль-миньон имеет открытый файл, который был удален, и блоки диска будут возвращены после того, как все дескрипторы файлов будут закрыты перезагрузкой службы.

Другие общие подозреваемые здесь включают в себя syslog / rsyslog / syslog-ng, squid, apache , или любой процесс, выполняемый вашим сервером, который является «тяжелым».

2
ответ дан 24 July 2018 в 17:02

Подобно @TopHat, но фильтрует некоторые файлы, если у них есть M, G или T в имени. Я не думаю, что он пропустит размер в первом столбце, но он не будет соответствовать имени файла, если вы не назовете файлы творчески.

du -chad 1 . | grep -E '[0-9]M[[:blank:]]|[0-9]G[[:blank:]]|[0-9]T[[:blank:]]'

Переключатели командной строки объясняются здесь, так как я не знал, что c или a.

-1
ответ дан 24 July 2018 в 17:02

Другие вопросы по тегам:

Похожие вопросы: