• Время чтения ~1 мин
  • 31.07.2023

Здравствуйте, ребята, 100% полное дисковое пространство - распространенная проблема, и вам, как программисту или пользователю Linux, часто нужно освободить место на диске, удалив самые большие файлы и каталоги. Для этого вам нужно знать некоторые примеры команд Linux find для перечисления и удаления некоторых самых больших файлов и каталогов, и это то, что вы узнаете в этом руководстве. Как Java-разработчик, вам также необходимо поддерживать свои приложения, большинство из которых в основном работают на машинах Linux. Несмотря на то, что производство контролируется специальными группами поддержки и они получают регулярные оповещения о состоянии пространства файловой системы, они часто прибегают к вам или ответственному разработчику о том, что делать, когда дисковое пространство почти заполнено или достигает 100%.

Это еще более распространено в средах UAT и QA/TEST, где никто на самом деле не контролирует, а затем люди начинают кричать вам, что что-то не работает, процессы Java не запущены, а системы не могут подключаться друг к другу, только чтобы обнаружить, что в машине не осталось места.

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

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

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

Как найти большие файлы и каталоги, чтобы освободить место

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

Подождите, если у вас есть время, чтобы понять, как работает эта команда поиска Linux, но если вы спешите, вот что вам нужно:

Команда Linux для поиска 10 самых больших каталогов на вашем диске

Вот команда, которую я использовал ежедневно, чтобы найти большой каталог на любом хосте, когда дисковое пространство закончилось или достигло 100% заполнения

$ du -hs */ | sort -nr | head

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

Команда Linux для поиска самого большого файла в каталоге

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

$ ls -lS | head
Вот и все. Теперь у вас есть самые большие файлы в этой папке.  Если это то, что вы можете удалить, просто удалите это. Если вам нужны все файлы, просто удалите команду head.

Кстати, если вы не знакомы с основными командами, такими как head, less, find и ls, я предлагаю вам сначала пройти эти бесплатные курсы Linux, а не прыгать по сообщениям в блогах. Это даст вам всю информацию, необходимую для лучшего понимания подобной статьи и решения ваших повседневных проблем с Linux.

Как рекурсивно найти самые большие файлы в любом каталоге в Linux

Теперь мы будем использовать команду find для поиска только файлов, а затем отсортируем, чтобы найти топ-10 или топ-5 самых больших файлов во всех каталогах из текущего каталога. Это напечатает полный путь к файлу, который вы можете просто скопировать и удалить, чтобы освободить место на диске.

$ find -type f -ls | sort -k 7 -r -n | head -5

find list только files, а не каталоги, поэтому вы можете отсортировать их, используя столбец 7 (столбец с размером файла).

Мы сортируем, используя опцию сортировки -n для числового порядка и -r обратного порядка (от самого большого к наименьшему, т.е. в порядке убывания), и, наконец, только первые 5 файлов в текущем каталоге и подкаталоге.

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

$ find / -type f -ls | sort -k 7 -r -n | head -5

$ find . -type f -ls | sort -k 7 -r -n | head -10

Кстати, если у вас возникли проблемы с пониманием приведенной выше команды даже после моего объяснения, например, вы не понимаете канал для объединения двух команд Linux или подачи вывода одной команды с другой стороны, я предлагаю вам пройти курс основ интерфейса командной строки Linux (CLI) на Pluralsight, чтобы сначала изучить основы.

Как команды find, du, sort и head работают вместе?

В Linux нет ни одной команды, которая помогла бы нам с этой задачей, но мы будем использовать комбинацию команд find, du, sort и head для быстрого рекурсивного поиска и удаления самых больших файлов и каталогов.

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

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

Как я уже говорил ранее, если вы не знакомы с этими командами, я предлагаю вам сначала пройти курс Linux Command Line Basics на Udemy, который вы можете получить всего за 10 долларов за несколько флэш-продаж, которые они проводят каждый месяц или около того.

Теперь нас не интересуют все файлы, так как файлов могут быть сотни, и поэтому мы используем команду head, которая может распечатать 10 или 5 лучших файлов в зависимости от вашего выбора. Например, заголовок 10 напечатает 10 строк. Например, head -n 10 напечатает первые 10 строк.

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

Теперь команда найти, которая может помочь вам рекурсивно искать файл по размеру во всех каталогах. Просто выполните команду find с параметром -size и запустите ее из текущего каталога, если вы уже находитесь в начале каталога или раздела вашего приложения.

Затем он продолжит и найдет все файлы, размер которых превышает указанный вами размер.

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

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


Связанные учебники по командам UNIX

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Об авторе CrazyBoy49z
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297