• Час читання ~6 хв
  • 31.07.2023

Привіт, хлопці, 100% повний дисковий простір є поширеною проблемою, і як програмісту або користувачеві Linux, вам часто потрібно звільнити місце на диску, видаляючи найбільші файли та каталоги. Для цього вам потрібно знати деякі приклади команд Linux, щоб перерахувати та видалити деякі найбільші файли та каталоги, і це те, що ви дізнаєтеся в цьому підручнику. Як розробник 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

Знайти команду Тільки список файлів, а не каталогів, отже, ви можете сортувати їх за допомогою стовпця 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 на Udemy, який ви можете отримати всього за 10 доларів США за кілька флеш-продажів, які вони проводять щомісяця або близько того.

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

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

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

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

Ось і все про те, як знайти найбільші файли і каталоги на будь-якому хості, розділі і звільнити місце на диску в Linux. Ці команди Linux find дуже зручні, і я завжди записую їх у своїх нотатках для швидкої довідки, я знаю, що іноді важко написати команду 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