Yandex
Обновяване на предпочитанията за бисквитки

Анализ на дисковото пространство: ncdu, du

Мониторингът на дисковото пространство, анализът на дисковото пространство в Linux е от решаващо значение за поддържане на производителността на вашата система и за предотвратяване на проблеми с недостатъчно място за съхранение, като сривове на системата, загуба на данни и прекъсване на услугата.

Препоръчваме ви редовно да проверявате дисковото пространство в Linux, ако управлявате виртуален частен сървър (VPS), поддържате бази данни и изпълнявате мащабни приложения.

du

Командата du е стандартна команда на Linux/Unix, която позволява на потребителя бързо да получи информация за използването на диска в директории и файлове. Най-добре е да се прилага за конкретни директории и позволява много варианти за персонализиране на изхода според вашите нужди.

Синтаксисът на помощната програма du е следният:
du [options] [file]

Ключове du


Командата du предлага редица опции, които разширяват нейната функционалност. Нека разгледаме някои често използвани опции:
  • -s или --summarize Предоставя обобщена информация за използването на диска за определена директория или файл, без да показва информация за използването на отделните поддиректории.
  • -h или --human-readable Показва размери в лесен за четене формат, като използва единици като KB, MB, GB и т.н. Тази опция улеснява тълкуването на информацията за използването на диска.
  • -c или --total Показва общото използване на диска в допълнение към индивидуалното използване на директории и файлове.
  • -a или --all Показва информация за използването на диска за всички файлове и директории, включително скритите файлове.
  • --time Показва времето на последната модификация на всеки файл или директория.
  • --exclude Изключва определени директории или файлове и папки от изчисляването на използването на диска въз основа на шаблони или имена.

Командата „du“ в Linux е универсален инструмент, който може да предостави ценна информация за използването на диска.

Нека започнем с един прост пример. Да предположим, че искате да проверите използването на диска в определена директория. Можете да направите това, като използвате командата 'du', последвана от пътя до директорията. Например, за да проверите използването на диска в директорията /home/user/documents, използвайте следната команда:
du /home/user/documents
Изходът на тази команда ще покаже общото използване на диска на посочената директория, включително всички нейни поддиректории. Изведеното число е общият размер на всички файлове и директории, съдържащи се в посочената директория, измерен в килобайти.

Но какво да направите, ако искате да видите размера на всяка поддиректория поотделно? Можете да направите това, като използвате опцията '-h' в командата 'du'. Тази опция улеснява четенето на изходните данни, като показва размерите в „удобен за четене от човека“ формат (т.е. в килобайти (K), мегабайти (M), гигабайти (G) и т.н.). Ето как можете да използвате тази опция:
du -h /home/user/documentsВ този изход ще видите списък на всички поддиректории в посочената директория заедно със съответните им размери и ще определите кои поддиректории заемат най-много място.

Използване на флаговете '-a' и '-h'

Suppose you want to see the disk usage of all files in a directory, not just the total size of the directory. You can do this by using the '-a' flag. Combine this with the '-h' flag to make the output clearer. Here's an example:
du -ah /home/user/documentsВ този изход ще видите списък на всички файлове в посочената директория заедно със съответните им размери. Това ще ви помогне да разберете кои конкретни файлове заемат най-много място.

Използване на флага «--exclude»

И накрая, флагът '-exclude=PATTERN' ви позволява да изключите файлове, които отговарят на определен шаблон. Това може да е полезно, ако искате да изключите определени видове файлове. Ето един пример:
du -h --exclude='*.txt' /home/user/documentsВ този пример 'du' изключва всички .txt файлове от изчислението на използването на диска, което ви позволява да се съсредоточите върху други типове файлове.

Това са само няколко примера от многото начини за използване на командата 'du' в Linux. Чрез комбиниране на различните флагове и опции можете да адаптирате командата към конкретните си нужди и да получите подробна картина на използването на диска.

Използване на опцията -c:

Тази опция показва общия сбор:
du -c -h kt.txt pt.txt
8.0K    kt.txt
4.0K    pt.txt
12.0K  total

Използване на опцията --time:

Тази опция се използва за показване на времето на последната модификация на изхода на du.

ncdu

ncdu (NCurses Disk Usage) е ncurses-базирана версия на популярната команда„du with“, която предлага най-бързия начин за анализиране и проследяване на използването на дисковото пространство в Linux. Това е проста, бърза и лесна за използване програма, която работи на всяка минимална Linux/Unix базирана система с инсталиран ncurses.

С отличен интерфейс помощната програма ncdu Linux показва информация, показваща използването на дисковото пространство в мегабайти и гигабайти, заедно с графична лента за използване, имена на файлове/директории, изтриване на файлове, опции за надграждане и др.

Първо, актуализирайте системата:
apt update
След това изпълнете командата за актуализация:
apt upgrade
Нека видим как да инсталираме ncdu на Debian (10,11 и 12) и Ubuntu (всички версии).

За Debian, Ubuntu и Mint
apt install ncdu 
За RHEL/CentOS/Fedora и Rocky/AlmaLinux
yum install ncdu 
За Gentoo Linux
emerge -a sys-apps/ncdu     
За Alpine Linux
apk add ncdu                 
За Arch Linux
pacman -S ncdu               
За OpenSUSE
zypper install ncdu         
За FreeBSD   
pkg install ncdu
След инсталацията стартирайте ncdu:
ncdu
Тази команда ще сканира работната ви директория и ще отвори интерфейса ncdu.

Изходен формат

След като сканирането приключи, ncdu ще ви покаже структурата на файловете и директориите, използващи устройството:

Записите в интерфейса на браузъра могат да се показват с един символ. Тези символи имат следното значение:
  • ! Възникнала е грешка при четенето на тази директория.
  • . Възникнала е грешка при четене на поддиректория, така че посоченият размер може да е неправилен.
  • < Файлът или директорията са изключени от статистиката с помощта на шаблони за изключване.
  • > Директорията е в друга файлова система.
  • ^ Директорията е изключена от статистиката, защото е псевдофайлова система на Linux.
  • @ Тя не е нито файл, нито папка (символична връзка, сокет, ...).
  • X Същият файл вече е бил отчитан (твърда връзка).
  • e Празна директория.

Навигация

Използвайте клавиша със стрелки, за да преминете през файловете. Това ще ви позволи да се движите нагоре и надолу. За да видите информация за избраната директория (път, използване на диска), натиснете 'i'.
Натиснете десен бутон, enter, l - Отваряне на избраната директория
Натиснете наляво, <, h - Преминаване към предишната директория

За да скриете този прозорец, натиснете отново 'i'.

Налични интерфейсни функции

По подразбиране файловете и директориите се сортират по размер. Интерфейсът на ncdu обаче предлага различни опции за сортирането им.

n Сортиране по име на файл (щракнете отново, за да сортирате в низходящ ред)

s Сортиране по размер на файла

C Сортиране по брой елементи

a Превключвате между показване на използването на диска и показване на видимия размер.

M Организирайте по време на последното дете mtime или модифицирано време.

d Изтриване на избрания файл или директория. Ще бъде показано съобщение за грешка, ако съдържанието на директорията не съвпада или вече не съществува във файловата система.

t Превключвайте папките преди файловете при сортиране.

g Превключвайте между показване на процент, графика, и двете или нито едно от двете. Процентът е спрямо размера на текущата директория, а графиката е спрямо най-големия елемент в текущата директория.

c Превключвайте дали да се показва броят на децата.

m Превключва показването на последното дете mtime или модифицирано време.

e Показва/скрива „скрити“ или „изключени“ файлове и директории. Имайте предвид, че дори да не виждате скрити файлове и директории, те все още съществуват и се вземат предвид при изчисляване на размерите на директориите. Ако подозирате, че общите суми, показани в долната част на екрана, не са верни, уверете се, че не сте активирали тази опция.

i Показва информация за текущо избрания елемент.

r Актуализира/преизчислява текущия каталог.

b Ncdu ще определи предпочитаната от вас обвивка чрез променливите „NCDU_SHELL“ или „SHELL“ (в този ред) или ще извика „/bin/sh“, ако не е посочена нито една от тях. Това също така ви позволява да конфигурирате друга команда, която да се изпълнява при натискане на клавиша „b“. Например, за да извикате файловия мениджър vifm(1) вместо шел, стартирайте ncdu по следния начин:
export NCDU_SHELL=vifmncdu
Ncdu ще зададе променливата на средата 'NCDU_LEVEL' или ще я увеличи, преди да стартира обвивката. Тази променлива ви позволява да определите кога вашият шел да бъде стартиран от ncdu, което може да бъде полезно, за да се избегне влагане на множество инстанции на ncdu. Самият Ncdu (понастоящем) не ви предупреждава, когато се опитвате да стартирате вложени инстанции.

q exit.

Ключове ncdu

-h Извежда малко помощно съобщение

-q Тих режим. Когато изчислява дисковото пространство, ncdu по подразбиране опреснява екрана 10 пъти в секунда, а в тих режим това се намалява до веднъж на 2 секунди. Използвайте тази функция, за да спестите честотна лента при отдалечени връзки.

-v Версия за отпечатване.

-x Преброява само файловете и директориите, които са в същата файлова система като посочения dir.

--exclude PATTERN Изключване на файлове, които съответстват на образеца. Тези файлове все пак ще се показват по подразбиране, но няма да се отчитат в статистиката за използването на диска. Този аргумент може да се добави повече от веднъж, за да се добавят повече шаблони.

--exclude-from FILE Изключване на файлове, съответстващи на всеки шаблон във FILE. Шаблоните трябва да бъдат разделени с нов ред.

--include-caches, --exclude-caches Включва (по подразбиране) или изключва директории, съдържащи CACHEDIR.TAG. Тези директории ще бъдат показани, но съдържанието им няма да бъде сканирано и отчетено в статистиката за използването на диска.

--include-kernfs, --exclude-kernfs (само за Linux) Включете (по подразбиране) или изключете псевдофайловите системи на Linux, например /proc (procfs), /sys (sysfs).

Пълен списък на известните в момента псевдофайлови системи: binfmt, bpf, cgroup, cgroup2, debug, devpts, proc, pstore, security, selinux, sys, trace.

Нюанси

Несъответствие на данните от du, ncdu и софтуера

Въпреки че командите 'ncdu', 'du' са мощен инструмент за оценка на използването на дискове в Linux, има и други методи и инструменти, които също могат да бъдат ефективни, особено при по-сложни сценарии или за потребители, които предпочитат различен подход. Такава алтернатива е командата 'df'.

Използване на командата 'df'

Командата 'df' в Linux се използва за определяне на използването на дисковото пространство на дадена файлова система. Докато командата 'du' оценява използването на файловете и директориите на диска, командата 'df' показва количеството използвано и налично дисково пространство на файловите системи.

Основен синтаксис на df:
df [options] [filesystems]
Тук,
  • options: Това са незадължителни флагове, които променят изхода на командата.
  • filesystems: Можете да посочите конкретни файлови системи, за да проверите използването им, вместо да получавате информация за всички монтирани дискове.
Ако не е посочено име на файл, се извежда наличното пространство във всички монтирани в момента файлови системи.

Ако искате да стартирате df в удобен за четене формат, използвайте опцията --human-readable (съкратено h ), ето един пример за използване на командата 'df':
df -h
В този пример флагът '-h' се използва, за да се покаже изходът в удобен формат. Ще видите списък на всички монтирани файлови системи, както и техния общ размер, използвано пространство, налично пространство и процент на използваното пространство.
Ако изтриването на ненужни файлове в сървъра не освобождава място на диска, можете да видите списък на всички изтрити файлове с отворени файлови дескриптори, като използвате тази команда:
lsof | grep deleted
И след това направете рестарт
service <име_процес> restart
Ето едно кратко сравнение на методите за проверка на дисковото пространство:

МетодЗаПротив
Команда 'du'Подробна информация за използването

на диска, много опции
Може да се наложи да се коригират грешки

в разрешенията.
Команда 'df'Позволява използването на

дискови файлови системи
По-малко подробно от «du».
Външни инструменти

(например, 'ncdu')
Удобен за потребителя интерфейс,

графичен изход
Изисква инсталация, може да не е толкова гъвкава,

колкото инструментите от командния ред
02 Sep 2024, 09:59:51