Что занимает место в Linux

Обновлено: 22.11.2024

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

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

относительно «нет графического интерфейса, это сервер»: вы можете установить приложение с графическим интерфейсом (при условии, что вы довольны им и библиотеками поддержки, находящимися на сервере) и использовать его на своем локальном экране через X11-туннелирование-через-SSH с чем-то вроде export DISPLAY=:0.0; ssh -Y @filelight (замените filelight предпочитаемым инструментом). Конечно, когда свободного места совсем не осталось, если у вас еще не установлен этот инструмент, вам все равно придется использовать что-то еще!

13 ответов 13

Как всегда в Linux, есть несколько способов выполнить работу. Однако, если вам нужно сделать это из CLI, я предпочитаю этот метод:

Я начинаю с того, что запускаю это как root или с помощью sudo:

Команда grep предназначена для ограничения возвращаемых строк теми, которые возвращают значения в диапазоне мегабайт или гигабайт. Если ваши диски достаточно большие, вы также можете добавить |T, чтобы включить суммы в терабайтах. Вы можете получить некоторые ошибки в /proc , /sys и/или /dev, поскольку они не являются реальными файлами на диске. Тем не менее, он должен по-прежнему обеспечивать корректный вывод для остальных каталогов в корне. После того, как вы найдете самые большие из них, вы можете запустить команду внутри этого каталога, чтобы сузить путь к виновнику. Так, например, если бы /var был самым большим, вы могли бы сделать это следующим образом:

Это должно привести вас к проблемным детям!

Дополнительные соображения

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

    Предоставленный мной grep может привести к случайному возвращению значения «K», если имя каталога или файла имеет заглавную букву G или M. Если вы абсолютно не хотите, чтобы какой-либо из каталогов со значением K появлялся, вы хотели бы сделайте свою игру с регулярными выражениями более творческой и сложной. например grep -E "^[0-9\.]*[MG]"

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

Вывод команды du можно отсортировать таким образом, чтобы наибольшее значение находилось внизу. Просто добавьте это в конец команды: | сортировать -h

Ваш grep также возвращает все папки с буквами M или G в их именах, творческое регулярное выражение должно находить числа с необязательной точкой + M|G, например, "^9*[.]*[0- 9]*[МГ]"

Если вы знаете, что проблема связана с одним диском, вы можете использовать параметр -x, чтобы заставить du оставаться на этом одном диске (предоставляется в командной строке). Вы также можете использовать sort -h для правильной сортировки удобочитаемых значений в мегабайтах/гигабайтах. Обычно я опускал параметр --max-depth и просто искал таким образом весь диск, сортируя соответствующим образом, чтобы самые большие объекты оказывались внизу.

@alexis Мой опыт показывает, что иногда я получаю другой мусор, смонтированный ниже интересующей меня точки монтирования (особенно если это / ), и использование -x дает мне гарантию, что я не ошибусь. Если ваш / заполнен и у вас есть отдельно смонтированный /home или что-то еще, использование -x в значительной степени необходимо, чтобы избавиться от ненужных вещей. Поэтому я считаю, что проще использовать его постоянно, на всякий случай.

Для этого можно использовать ncdu. Это работает очень хорошо.

Я корю себя за то, что обычно использую эту программу, но так как места не осталось, я не могу ее установить, ха-ха

после установки введите sudo ncdu / из командной строки. sudo, потому что, если вы не поставите sudo, он не будет сообщать о размерах папок, принадлежащих root, и / потому что, если вы не наберете это, он будет сообщать рекурсивно только из папки, в которой вы находитесь

Я использую эту команду:

Иногда мне нужно запустить его из каталога /, так как я поместил что-то в странное место.

Я часто нахожу более полезным делать это без ключа -d 1 (и обычно с less вместо head -20 ), чтобы получить полный рекурсивно пронумерованный список всех файлов и каталогов, отсортированных по занимаемому ими пространству. .Таким образом, если я вижу, что каталог занимает много места, я могу просто прокрутить вниз, чтобы увидеть, действительно ли большая часть пространства занята каким-то конкретным файлом или подкаталогом в нем. Это хороший способ найти ненужные файлы и каталоги и удалить их, чтобы освободить место: просто прокрутите вниз, пока не увидите что-то, что вы точно не хотите сохранять, удалите это и повторите.

@KarlMorrison он не читает его быстрее, просто эта сортировка ожидает завершения вывода перед началом вывода.

@muru А, хорошо. Однако я получаю информацию быстрее, так что я могу начать движение быстрее, если это лучший термин!

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

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

@KarlMorrison Я думаю, что есть способы запуска программ с графическим интерфейсом через ssh, но это идея на потом, когда у вас будет место для установки пакетов

@David О да, я пытаюсь избавиться от этого. Раньше это было необходимо на другой платформе, которую я использовал. Я исправлю этот комментарий.

@Karl да, это легко, если X уже установлен на клиенте: ssh -X и затем запустите вашу программу из командной строки

@MarkYisri, дело в том, что вам нужно установить программу и ее зависимости. А в случае с Filelight нужны как минимум KDElibs и Qt, которых совсем не мало. См., например. эта страница для пакета filelight Ubuntu, обратите внимание, сколько у него зависимостей.

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

Я не знаю Ubuntu и не могу проверить свой ответ, но опубликую здесь свой ответ, основанный на моем опыте работы в качестве администратора Unix давным-давно.

Узнайте, в какой файловой системе не хватает места

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

Узнать, сколько места занимают файлы этой файловой системы

С помощью параметра -x можно гарантировать, что учитываются только файлы, входящие в эту файловую систему. Некоторые варианты Unix (например, Solaris) не знают параметр -x для du. Тогда вам придется использовать некоторые обходные пути, чтобы найти du вашей файловой системы.

Теперь проверьте, соответствует ли du ​​видимых файлов размеру используемого пространства, отображаемого df. Если это так, вы можете начать поиск больших файлов/каталогов файловой системы /myfilesystem для очистки.

чтобы найти самые большие подкаталоги каталога /. /использовать

опция -k заставляет du выводить sie в килобайтах без каких-либо единиц измерения. Это может быть значением по умолчанию в некоторых системах. Тогда вы можете опустить эту опцию. Самые большие файлы/подкаталоги будут показаны внизу вывода.

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

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

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

некоторые процессы используют уже удаленный файл. Поэтому эти файлы были удалены из каталога, и du не может их видеть. Но для файловой системы их блоки все еще используются, пока процессы не закроют файлы. Вы можете попытаться найти соответствующие процессы (например, с помощью lsof) и заставить их закрыть эти файлы (например, остановив приложение или уничтожив процессы). Или просто перезагрузите компьютер.

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

сообщит значение, не содержащее размер /myfilesystem/subdir/bigfile. Единственный способ узнать, существуют ли такие файлы, — размонтировать /myfilesystem/subir и проверить с помощью

если он содержит файлы.

Могут быть специальные типы файловых систем, которые используют/резервируют место на диске, невидимом для команды ls. Вам нужны специальные инструменты для отображения этого.

При администрировании систем Linux я часто сталкиваюсь с трудностями, пытаясь найти виновника, когда раздел переполняется. Я обычно использую du / | sort -nr, но в большой файловой системе это занимает много времени, прежде чем будут возвращены какие-либо результаты.

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

Я бы предпочел решение с командной строкой, основанное на стандартных командах Linux, поскольку мне приходится администрировать довольно много систем, а установка нового программного обеспечения доставляет много хлопот (особенно при нехватке места на диске!)

40 ответов 40

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

Вероятно, вы знаете, в какой файловой системе не хватает места. В этом случае вы можете использовать ncdu -x для подсчета файлов и каталогов только в той же файловой системе, что и сканируемый каталог.

лучший ответ. также: sudo ncdu -rx / должен давать чистое чтение самых больших каталогов / файлов ТОЛЬКО на корневом диске. ( -r = только для чтения, -x = оставаться в той же файловой системе (что означает: не выполнять монтирование других файловых систем) )

Не переходите сразу к du / . Используйте df, чтобы найти раздел, который вам мешает, а затем попробуйте команды du.

Мне хотелось бы попробовать

потому что он печатает размеры в "удобочитаемой форме". Если у вас не очень маленькие разделы, поиск каталогов в гигабайтах — довольно хороший фильтр для того, что вы хотите. Это займет у вас некоторое время, но если вы не установили квоты, я думаю, что так оно и будет.

Как отмечает @jchavannes в комментариях, выражение может стать более точным, если вы обнаружите слишком много ложных срабатываний. Я включил предложение, которое делает его лучше, но все еще есть ложные срабатывания, поэтому есть только компромиссы (более простое выражение, худшие результаты; более сложное и длинное выражение, лучшие результаты). Если в вашем выводе отображается слишком много маленьких каталогов, соответствующим образом настройте регулярное выражение. Например,

Управление дисковым пространством на сервере Linux — важная задача. Например, приложения-менеджеры пакетов уведомляют вас о том, сколько места на диске потребуется для установки. Чтобы эта информация была значимой, вы должны знать, сколько места доступно в вашей системе.

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

  • Система на базе Linux
  • Окно терминала/командная строка
  • Учетная запись пользователя с правами sudo или root

Проверка места на диске Linux с помощью команды df

Вы можете проверить свободное место на диске, просто открыв окно терминала и введя следующее:

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

Отображение использования в мегабайтах и ​​гигабайтах

Вы можете отобразить использование диска в более удобном для человека формате, добавив параметр -h:

Отображает размер в килобайтах (К), мегабайтах (М) и гигабайтах (Г).

Понимание формата вывода

Команда df выводит список из нескольких столбцов:

Вывод может содержать больше записей. Столбцы должны говорить сами за себя:

  • Файловая система — это имя каждого конкретного диска. Сюда входят физические жесткие диски, логические (разделенные на разделы) диски, а также виртуальные или временные диски.
  • Размер размер файловой системы.
  • Используется — объем пространства, используемого в каждой файловой системе.
  • Доступно – объем неиспользуемого (свободного) пространства в файловой системе.
  • Использовать% — показывает процент использования диска.
  • Смонтировано — это каталог, в котором находится файловая система. Ее также иногда называют точкой подключения.

Список файловых систем включает ваш физический жесткий диск, а также виртуальные жесткие диски:

  • /dev/sda2 — это ваш физический жесткий диск. Он может быть указан как /sda1, /sda0 или даже иметь более одного. /dev означает устройство.
  • udev Это виртуальный каталог для каталога /dev. Это часть операционной системы Linux.
  • tmpfs. Их может быть несколько. Они используются /run и другими процессами Linux в качестве временных файловых систем для запуска операционной системы. Например, tmpfs /run/lock используется для создания файлов блокировки. Это файлы, которые не позволяют нескольким пользователям изменять один и тот же файл одновременно.

Отображение определенной файловой системы

Команду df можно использовать для отображения определенной файловой системы:

Вы также можете использовать обратную косую черту:

Отображает использование вашего основного жесткого диска. Используйте точку подключения (в столбце Подключено), чтобы указать диск, который вы хотите проверить.

Примечание. Команда df предназначена только для полной файловой системы. Даже если вы укажете отдельный каталог, df будет считывать пространство всего диска.

Отображение файловых систем по типу

Чтобы перечислить все файловые системы по типу, используйте команду:

Здесь перечислены диски с типом ext4 в удобочитаемом формате.

Размер дисплея: 1000 вместо 1024

Вы можете отображать использование диска в единицах 1000 вместо 1024:

Это может решить проблему путаницы в технологии хранения. Производители жестких дисков продают жесткие диски размером из расчета 1000 байт = 1 килобайт.

Однако операционные системы делят это пространство так, что 1024 байта = 1 килобайту. Из-за этого на жестком диске емкостью 1000 ГБ можно использовать примерно 930 ГБ.

Примечание. Ознакомьтесь с нашим обзором команды Linux free, используемой для проверки общей, используемой, общей, свободной и доступной памяти и пространства подкачки.

Проверка места на диске в Linux с помощью команды du

Команда du отображает использование диска. Этот инструмент может отображать использование диска для отдельных каталогов в Linux, предоставляя вам более детальное представление об использовании вашего диска. Используйте его, чтобы отобразить объем пространства, используемого вашим текущим каталогом:

Как и с командой df, вы можете сделать du удобочитаемым:

Он отображает список содержимого текущего каталога и объем используемого пространства. Вы можете упростить отображение с помощью опции -s:

Показывает, сколько места занимает текущий каталог.

Чтобы указать каталог или файл, отметьте следующие параметры:

При использовании второй команды вы, возможно, заметили сообщение об отказе в доступе. Это означает, что текущий пользователь не имеет привилегий для доступа к определенным каталогам. Используйте команду sudo для повышения своих привилегий:

Примечание. Если вы работаете с CentOS Linux, вам может потребоваться использовать команду su, чтобы переключиться на пользователя root для доступа к защищенным каталогам.

Теперь вы должны понимать, как использовать команды df и du для проверки дискового пространства в вашей системе Linux. Помните, что для отображения полного списка параметров используйте df --help или du ​​--help .

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

В этом руководстве мы покажем вам, как использовать команду df для проверки места на диске и команду du для контроля использования диска в терминале. Это две основные команды Linux, которые помогут вам более эффективно управлять файлами.

Анализ жесткого диска

Команды df и du имеют несколько иное назначение при анализе жесткого диска. Чтобы избежать путаницы, мы объясним их в отдельных разделах. Начнем с команды df!

Проверка места на диске в Linux с помощью команды df

df, что означает файловая система диска, используется для проверки места на диске. Он покажет доступное и используемое хранилище файловых систем на вашем компьютере.

При выполнении этой команды вы увидите столбцы по умолчанию: "Файловая система", "Размер", "Используется", "Доступно", "Использование%" и "Смонтировано". Это должно выглядеть примерно так:

  • FileSystem — указывает имя файловой системы.
  • Размер — дает нам общий размер конкретной файловой системы.
  • Используется — показывает, сколько дискового пространства используется в конкретной файловой системе.
  • Доступно: показывает, сколько места осталось в файловой системе.
  • Использовать% — отображает процент используемого дискового пространства.
  • Mounted On — сообщает нам точку монтирования конкретной файловой системы.

Добавив в команду df определенный параметр, вы сможете более точно проверять место на диске в Linux. Вот самые популярные варианты:

  • df -h — отобразит результат в удобочитаемом формате.
  • df -m — эта командная строка используется для отображения информации об использовании файловой системы в мегабайтах.
  • df -k — отображать использование файловой системы в КБ.
  • df -T — эта опция покажет тип файловой системы (появится новый столбец).
  • df -ht /home — позволяет просмотреть информацию о конкретной файловой системе в удобочитаемом формате (в данном случае /home файловая система).
  • df — help – перечисляет другие полезные параметры, которые вы можете использовать, вместе с их описаниями.

Проверка использования диска в Linux с помощью команды du

Еще одна важная команда — это du, сокращение от Disk Usage. Он покажет вам подробную информацию об использовании диска файлами и каталогами на компьютере или сервере Linux. С помощью команды du вам нужно указать, какую папку или файл вы хотите проверить. Синтаксис следующий:

Давайте посмотрим на реальное использование команды du с каталогом Desktop:

  • du /home/user/Desktop — эта командная строка позволяет пользователям просматривать использование диска их папками и файлами на рабочем столе (включая подкаталоги).
  • du -h /home/user/Desktop — как и в случае с df, параметр -h отображает информацию в удобочитаемом формате.
  • du -sh /home/user/Desktop — параметр -s даст нам общий размер указанной папки (в данном случае — рабочего стола).
  • du -m /home/user/Desktop — опция -m предоставляет нам размеры папок и файлов в мегабайтах (мы можем использовать -k, чтобы увидеть информацию в килобайтах).
  • du -h — время /home/user/Desktop — указывает дату последнего изменения отображаемых папок и файлов.
  • df –help — отображает список доступных параметров и их назначение.

Объединение команд и очистка места на диске

Вы можете получить больше информации, объединив команды df и du с другими аргументами. Сделав это, вы получите лучшее представление о том, какие файлы можно удалить, чтобы освободить место на диске.

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

Сортировка файлов по размеру

Сначала мы собираем файлы и папки на рабочем столе в удобочитаемом формате с помощью команды du. Затем мы передаем результат команде sort вместе с параметром -rn. Скрипт отсортирует все файлы и папки от самых больших до самых маленьких, чтобы проверить использование дискового пространства в Linux. Комбинация должна выглядеть так:

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

Исключение по размеру файла

Допустим, вы хотите просмотреть все файлы, размер которых превышает определенный. Самый эффективный способ сделать это — использовать следующую команду:

Команда grep позволяет искать файлы по заданному шаблону. В этом примере скрипт вернет все файлы размером более 1 ГБ. Если вы хотите выделить данные объемом более 1 МБ, вы можете заменить G на M.

Исключение типов файлов

Последняя комбинация полезна, когда вам нужно исключить файл определенного формата из результатов поиска. Например:

Аргумент –exclude=".txt" гарантирует, что команда du будет отображать все форматы файлов, кроме документов .txt.

Заключение

Команды df и du — это инструменты управления файлами, которые проверяют место на диске в Linux и отображают все файлы, хранящиеся на вашем компьютере. Вы можете добавлять определенные параметры (например, -h, -m, -k и т. д.), чтобы уточнить вывод в соответствии с вашими потребностями.

Что замечательно, пользователи могут получить более конкретный результат, комбинируя du и df с другими командами, такими как sort, grep и exclude. Вместе они помогут вам лучше понять, как используется дисковое пространство на вашем сервере. Обязательно ознакомьтесь с нашей статьей, чтобы узнать о других полезных командах Linux.

Если у вас есть какие-либо вопросы, не стесняйтесь комментировать ниже!

Откройте для себя другие команды Linux для управления сервером

Домантас руководит командой по контенту и поисковой оптимизации, предлагая свежие идеи и нестандартные подходы. Обладая обширными знаниями в области SEO и маркетинга, он стремится распространить информацию о Hostinger во всех уголках мира. В свободное время Домантас любит оттачивать навыки веб-разработки и путешествовать по экзотическим местам.

Читайте также: