Здравствуйте, ребята, 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