---
title: "Утилиты ncdu, du для анализа занятости диска"
description: "Утилиты ncdu, du для анализа занятости диска. Установка и использование. Документация и инструкции по настройке облачных серверов Timeweb Cloud."
---

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

> Полный индекс документации для ИИ-агентов: [llms.txt](https://timeweb.cloud/llms.txt).

При работе с сервером важно контролировать занятый объем на диске. Если дисковое пространство окажется занято полностью, в работе VDS начнут возникать ошибки (ошибка 502, удаление файлов при их редактировании, повреждение базы данных). Чтобы этого избежать, необходимо своевременно увеличивать доступный объем, удаляя ненужные файлы или [расширяя сам диск](https://timeweb.cloud/docs/unix-guides/disk-resizing).

Для того, чтобы проверить, чем занято дисковое пространство на сервере, можно воспользоваться такими утилитами, как `ncdu` и `du`. Работать с ними достаточно просто. При анализе также может потребоваться проверить данные о файловой системе и inodes (подробнее об этом в последнем разделе этой статьи).

## ncdu

Утилита `ncdu` — один из самых удобных инструментов для анализа дискового пространства. Она имеет псевдографический интерфейс, что значительно упрощает работу с ней.

`ncdu` не предустановлена в дистрибутивах Unix по умолчанию, но ее легко можно установить командами ниже.

Для Debian / Ubuntu:

```shell
apt install ncdu
```

Для CentOS:

```shell
yum install ncdu
```

> [!NOTE]
> Если дисковое пространство уже переполнено и установить `ncdu` невозможно, можно сначала воспользоваться утилитой `du` (см. [ниже](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/disk-space-analysis-ncdu-du#du)), удалить несколько файлов, чтобы освободить немного места, после чего поставить `ncdu` и дальше продолжить работать с ней.

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

```shell
ncdu имя_каталога
```

Например, чтобы вывести информацию о корневом каталоге, выполните:

```shell
sudo ncdu /
```

![Ncdu1](https://content.timeweb.com/assets/f0c235a1-f156-44d6-aa3c-1177ea2761a7?width=732&height=409)Формат вывода

Количество символов `#` помогает определить, какие файлы и каталоги занимают больше всего места.

Крайний левый столбец может содержать дополнительные обозначения (например, на скриншоте выше — пометки `e`):

-   `!` — ошибка при чтении каталога;
-   `.` — ошибка при чтении подкаталога, т.е. указанный размер может быть некорректным;
-   `<` — объект исключен из подсчета (с помощью опции `--exclude`);
-   `>` — объект из другой файловой системы;
-   `@` — объект не является файлом или каталогом (символическая ссылка, сокет);
-   `H` — объект уже был учтен (жесткая ссылка);
-   `e` — пустой каталог.

### **Навигация**

Для перемещения по директориям используются клавиши со стрелками (вверх и вниз).

Стрелка вправо или Enter — войти в выбранную директорию.

Стрелка влево — вернуться в предыдущую директорию.

### **Доступные функции интерфейса**

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

`n` — упорядочить элементы по имени (в прямом и обратном порядке);

`s` — упорядочить элементы по размеру (в прямом и обратном порядке);

`g` — переключение между отображением «графика» (####) и объёма в процентах:

![Ncdu3](https://content.timeweb.com/assets/fd6a5e94-6af4-4804-97b1-007567a21da2?width=728&height=410)

`a` — переключение между отображением реального размера файлов и объемом занимаемого пространства на диске;

`e` — скрыть/показать скрытые файлы и папки;

`?` — вызвать краткую справку;

`d` — удалить выбранный элемент (перед удалением будет запрошено подтверждение действия);

`i` — вывести информацию о выбранном элементе:

![Ncdu2](https://content.timeweb.com/assets/22c495c6-ed3f-430b-8032-21bc5d6cca0c?width=732&height=410)

`q` — выйти.

### **Ключи ncdu**

Также при запуске утилиты можно использовать дополнительные ключи для `ncdu`:

`-h` (т.е. команда вида `ncdu -h`) — вывод краткой справки;

`-q` — «тихий режим», с обновлением данных каждые 2 секунды. Тихий режим позволяет снизить объем передачи данных при удаленных подключениях;

`-x` — учет при сканировании только файлов и директорий одной и той же файловой системы. Например, если есть директория `home/user/site.com`, и пространство с файлами и директориями внутри нее примонтировано из директории на другом диске (`/mnt/disk2/site.com`), то по умолчанию `ncdu` посчитает, что директория `/home/user/site.com` занимает пространство на основном диске, хотя на самом деле — на диске `disk2`. Использование ключа `-x` позволит отразить действительное положение дел на основном диске.

`-r` — режим «только для чтения», в данном режиме невозможно удаление файлов;

`--exclude` — исключение файла или типа файлов. `ncdu` отобразит эти файлы в общем списке, но не будет учитывать их при подсчете занятого пространства:

```shell
ncdu --exclude=/путь/к/каталогу/*что_исключаем*
```

Например:

```
ncdu --exclude=/home/user/*.html*
```

  `-о` — сохранить результаты в файл:

```shell
ncdu / -o путь/к/файлу.txt
```

## du

Утилита `du` (от англ. disk usage) присутствует во всех UNIX-дистрибутивах по умолчанию и позволяет получить общую информацию о занятом месте.

При выполнении команды она выводит объем пространства, занимаемого каждым файлом и каталогом в текущем каталоге:  
  
![Du11](https://content.timeweb.com/assets/3f7acdf6-3447-4c05-a076-57a236ef2839?width=373&height=137)

### **Ключи du**

Для вывода занятого объема в читаемом виде (в килобайтах, мегабайтах и т.д.) требуется ключ `-h`, мы будем использовать его во всех командах ниже.

-   Например, можно начать с оценки размера всех директорий в корневой файловой системе. Для этого добавим ключи `-s` (для вывода итогового размера указанной директории) и `-c` (для вывода «итого»):

```shell
du -shc /*
```

![Du22](https://content.timeweb.com/assets/b9abc3cb-bbe9-40ab-87e0-e55b2688434c?width=739&height=545)

-   Полезный и удобный способ подсчета и сортировки:

```shell
du -sch ./*|sort -hr
```

![Du8](https://content.timeweb.com/assets/d0e20f6e-5c62-43a3-b9fb-5332ea40a56d?width=427&height=124)

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

```shell
du -sh /путь/к/директории
```

![Du33](https://content.timeweb.com/assets/27381acf-d326-49d6-80c0-c3fe8614775c?width=381&height=38)

-   Для вывода размера всех файлов и подкаталогов в каталоге используйте ключ `-a`.

```shell
du -ah /путь/к/директории
```

![Du44](https://content.timeweb.com/assets/1c1a9d36-8833-4d8c-ad7d-8d9f0c437c70?width=594&height=392)

-   Для вывода суммарного объема всех показанных в выводе элементов используется ключ `-c`:

```shell
du -ch /путь/к/директории
```

![Du55](https://content.timeweb.com/assets/ce7cf186-8309-418e-bd4c-0a9c18a8fad2?width=513&height=258)

-   Можно использовать опцию `--exclude`**,** чтобы исключить из вывода конкретный тип файлов.

```shell
du -ah --exclude="*что_исключаем*"
```

Например:

```shell
du -ah --exclude="*.html*"
```

  ![Du9](https://content.timeweb.com/assets/1d8ccea3-bfc8-4a57-b010-a09d488bbe38?width=581&height=308)

-   Еще одна полезная опция — вывод времени последнего изменения файла. Для этого используется `--time`:

```shell
du -ah --time /путь/к/директории
```

## Нюансы

### Несоответствие данных du, ncdu и ПО

1.  Иногда можно столкнуться с ситуацией, когда утилиты `du` и `ncdu` показывают меньший объем, чем выводится в панели управления; либо же вы удаляете файлы, но ваше ПО сообщает, что свободного пространства по-прежнему недостаточно.  
    В этом случае для проверки стоит воспользоваться командой `df`, которая позволит получить данные именно о файловой системе (в то время как `du` и `ncdu` показывают именно физический объем на диске):

```shell
df -h
```

Вероятнее всего, в выводе будет информация о занятости 100% пространства.  
Это связано с тем, что иногда при удалении файла он остается доступен какому-либо запущенному процессу, из-за чего файловая система по-прежнему учитывает его в общем объеме занятого пространства.  
Чтобы решить проблему, нужно определить, какими процессами все еще используются удаленные файлы:

```shell
lsof | grep '(deleted)'
```

После чего перезапустить эти процессы: 

```
systemctl restart имя_сервиса
```

Например, в выводе ниже этот процесс — httpd, и именно его нужно перезапустить:

![Deleted](https://content.timeweb.com/assets/eeccd7fa-c458-4229-86ad-9172a2316b50?width=470&height=81)

2.  Если по данным панели управления и утилит `du` и `df` свободное место в наличии, однако ваше ПО или CMS по-прежнему сообщают о недостаточном объеме пространства, необходимо проверить [наличие свободных inodes](https://timeweb.cloud/docs/unix-guides/troubleshooting-unix/inodes-overflow).
