> For the complete documentation index, see [llms.txt](https://antons-organization-1.gitbook.io/administrirovanie-linux/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://antons-organization-1.gitbook.io/administrirovanie-linux/bazovye-zadachi/processy-i-potreblenie-resursov-servera/monitoring-processov-i-resursov-v-os-linux.md).

# Мониторинг процессов и ресурсов в ОС Linux

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FOrdCHAweHRcoqAwU3pLx%2Fphoto_2023-09-08_15-50-14.jpg?alt=media&amp;token=82dc2751-fc98-4011-aaec-ab3e145152b8" alt=""><figcaption></figcaption></figure>

## Команда df в linux <a href="#id-1-komanda-df-v-linux" id="id-1-komanda-df-v-linux"></a>

Чтобы посмотреть доступное пространство на всех примонтированных разделах и информацию о них достаточно набрать:

**`df`**

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2Fl64RQ11EPNEcrUkV2A3q%2Fimage.png?alt=media&amp;token=03b9fe93-eab5-4503-8f9d-11d35b11548d" alt=""><figcaption><p>Вывод команды df</p></figcaption></figure>

Утилита отображает стандартный набор колонок, но понять в ее выводе что-то с первого раза сложно. Все данные выводятся в килобайтах. Теперь давайте попросим утилиту выводить данные в более читаемом формате:

`df -h`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FeFHxEbUhRXdDZsZNR3VT%2Fimage.png?alt=media&amp;token=fedba149-d7ae-46fb-89e1-6a4a7f46ca19" alt=""><figcaption><p>Вывод команды df -h</p></figcaption></figure>

Это самое популярное сочетание опций, потому что оно дает максимально понятную информацию и уже можно судить о том, что происходит на диске. Например, мы видим, что в корневой директории уже занято 83% места и, возможно, пора что-то удалить. Если задать опцию -a, вы можете получить информацию обо всех файловых системах известных ядру, которые были смонтированы:

`df -a`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FDwXvP8rdxlpORq2uhCYd%2Fimage.png?alt=media&amp;token=b3263453-82da-42b7-908a-7a57b38d829a" alt=""><figcaption><p>Вывод команды df -a</p></figcaption></figure>

Здесь отображается огромное количество виртуальных файловых систем ядра. Если вы хотите вывести только информацию про реальные файловые системы на жестком диске можно использовать опцию **-x** чтобы отфильтровать все **tmpfs**:

`df -x tmpfs`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FMo9usHTOSWeQxU5IrM8v%2Fimage.png?alt=media&amp;token=82ed2b0a-1641-45d6-a732-f62ea53c8edc" alt=""><figcaption><p>Вывод команды df -x tmpfs</p></figcaption></figure>

Также можно отфильтровать две файловые системы:

`df -x devtmpfs -x tmpfs`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FAVNYe6fx2MtTQa1l32Ng%2Fimage.png?alt=media&amp;token=022511ad-3dcb-43c0-ae54-27ac75077ace" alt=""><figcaption><p>Вывод команды df -x devtmpfs -x tmpfs</p></figcaption></figure>

Или же указать файловую систему, которую нужно отображать:

`df -t ext4`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FOByqc2rhI6QDbF8xoVxW%2Fimage.png?alt=media&amp;token=5f9fdf3c-cf9b-473f-8863-207e8e1f2a92" alt=""><figcaption><p>Вывод команды df -t ext4</p></figcaption></figure>

Также можно указать интересующий вас раздел, как вы видели в синтаксисе команды:

`df -h /dev/sda2`<br>

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FWqGVd8g7yJYo4rG1XBTp%2Fimage.png?alt=media&amp;token=d1f2e0ae-6a21-44d5-a9ed-0c0f0b456b0b" alt=""><figcaption><p>Вывод команды df -h /dev/sda2</p></figcaption></figure>

С помощью опции **-i** вы можете посмотреть информацию про состояние **inode** в вашей файловой системе:

`df -hi /dev/sda2`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FVsKO98THt5CksX9ZFmfG%2Fimage.png?alt=media&amp;token=226bc982-6ebc-494b-a6f9-cb4dd0e160d5" alt=""><figcaption><p>Вывод команды df -hi /dev/sda2</p></figcaption></figure>

{% hint style="info" %}
**inode** (произносится *а́йнод* или инод), индексный дескриптор — это [структура данных](https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85) в традиционных для ОС [UNIX](https://ru.wikipedia.org/wiki/UNIX) [файловых системах](https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0) (ФС), таких как [UFS](https://ru.wikipedia.org/wiki/Unix_File_System), [ext4](https://ru.wikipedia.org/wiki/Ext4). В этой структуре хранится [метаинформация](https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%B0%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5) о стандартных [файлах](https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D1%8B%D0%B9_%D1%84%D0%B0%D0%B9%D0%BB), [каталогах](https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3_\(%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0\)) или других объектах файловой системы, кроме непосредственно данных и имени.
{% endhint %}

Вывести объем доступного пространства в каталоге:

`df -h /home`<br>

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FbkVidgl0rvVi5ZNgeKUV%2Fimage.png?alt=media&amp;token=892f0679-3db8-4fcb-aa6f-1fe4c2781db2" alt=""><figcaption><p>Вывод команды df -h /home</p></figcaption></figure>

Команда **df** – очень простой в освоении, но эффективный инструмент, позволяющий всегда быть в курсе использования дискового пространства в ваших системах.

## Команда du в Linux <a href="#id-2-komanda-du-v-linux" id="id-2-komanda-du-v-linux"></a>

**Команда du** , сокращение от «использование диска», сообщает приблизительный объем дискового пространства, используемого данными файлами или каталогами. Это практически полезно для поиска файлов и каталогов, занимающих большие объемы дискового пространства.

`du [OPTIONS]... FILE...`

Если данный FILE является каталогом, **du** будет суммировать использование диска для каждого файла и подкаталога в этом каталоге. Если *FILE* не указан, ***du*** сообщит об использовании диска в текущем рабочем каталоге .

При выполнении без какой-либо опции du отображает использование диска для данного файла или каталога и каждого из его подкаталогов в байтах.

`du ~/Documents`

Вы также можете передать команде du несколько файлов и каталогов в качестве аргументов:

`du ~/Documents ~/Pictures ~/.zshrc`

Если вы запустите du для файла или каталога, для которого у вас нет прав, вы получите что-то вроде «du: невозможно прочитать каталог». В этой ситуации вам нужно будет добавить к команде sudo .

**du много опций, я выделю только наиболее часто используемые.**

Параметр **-a** указывает **du** сообщать об использовании дискового пространства каждым файлом в каталоге.

`du -a /tmp/`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FUcrr2ZoVArLSGrGzP1z1%2Fimage.png?alt=media&amp;token=44fc375a-e90d-4192-81ce-5e5c77672e3d" alt=""><figcaption><p>Вывод команды du -a /tmp/</p></figcaption></figure>

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

Например, чтобы получить общий размер ***/var/lib*** и всех его подкаталогов, вы должны выполнить следующую команду:

`sudo du -h /var`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FR3bSke8AZWR3IrH7O2yP%2Fimage.png?alt=media&amp;token=41e667a5-aeca-4e74-beee-e8a5d2e5387a" alt=""><figcaption><p>Вывод команды du -h /var/</p></figcaption></figure>

Мы используем sudo потому что большинство файлов и каталогов внутри каталога **/var/lib** принадлежат пользователю **root** и не доступны для чтения обычным пользователям.

Чтобы сообщить только общий размер указанного каталога, а не подкаталогов, используйте параметр ***-s*** :

```
sudo du -sh /var
```

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FmTP9i6ZkF2ZM6jKv0zAW%2Fimage.png?alt=media&amp;token=9fb95012-9cd1-4921-b676-f07bf5c23841" alt=""><figcaption><p>Вывод команды du -sh /var/</p></figcaption></figure>

Параметр ***-c*** указывает ***du*** сообщать общую сумму. Это полезно, когда вы хотите получить объединенный размер двух или более каталогов.

```
sudo du -csh /var/log /var/lib
```

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FX9PsbBvGWOMrpWzj0des%2Fimage.png?alt=media&amp;token=f1f745c8-c8f1-49b6-b3fb-0ed3ad1f1cd3" alt=""><figcaption><p>Вывод команды du -csh /var/lib /var/log</p></figcaption></figure>

Если вы хотите отобразить использование диска подкаталогами *n-уровня*, используйте параметр **--*****max-depth*** и укажите уровень подкаталогов. Например, чтобы получить отчет о каталогах первого уровня, вы должны использовать:

```
sudo du -h --max-depth=1 /var/log
```

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2Ffgt9GozeJZLZGplVjPOa%2Fimage.png?alt=media&amp;token=92a71715-b85b-4f23-ace0-5fca15a92dd1" alt=""><figcaption><p>Вывод команды du -h --max-depth=1 /var/log</p></figcaption></figure>

По умолчанию утилита ***du*** повторно использует дисковое пространство, используемое каталогом или файлом. Чтобы узнать очевидный размер файла, используйте переключатель  **--*****apparent-size*** . «Видимый размер» файла — это фактический объем данных в файле.

```
sudo du -sh --apparent-size /var/lib
```

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2Fl9czBzlJv4auTJ358lBL%2Fimage.png?alt=media&amp;token=d9c7eb22-ab7f-4ee4-9683-85fb30deadd8" alt=""><figcaption><p>Вывод команды sudo du -sh --apparent-size /var/lib</p></figcaption></figure>

**du** также позволяет использовать шаблон оболочки. Например, чтобы получить размер всех каталогов, начинающихся с «rc» в каталоге **/etc**, вы должны запустить:

```
sudo du -csh /etc/rc*
```

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FDheTryqHCN7KnDCGYxyK%2Fimage.png?alt=media&amp;token=6af9259b-ea11-4ba9-83ad-bd19610b90cd" alt=""><figcaption><p>Вывод команды du -csh /etc/rc*</p></figcaption></figure>

### **Использование du с другими командами**

Команду ***du*** можно комбинировать с другими командами с конвейерами.\
Например, чтобы напечатать 5 самых больших каталогов внутри каталога ***/var*** вы должны передать вывод du в команду **sort** чтобы отсортировать каталоги по их размеру, а затем передать результат в команду **head** которая распечатает только 5 верхних каталогов:

```
sudo du -h /var/ | sort -rh | head -5
```

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FTjdOlsA0bnQFldEXeJj5%2Fimage.png?alt=media&amp;token=9378ba7e-eb21-4944-ac16-8e6fa79b10d0" alt=""><figcaption><p>Вывод команды du -h /var/ | sort -rh | head -5</p></figcaption></figure>

### **Выводы**

К настоящему моменту вы должны хорошо понимать, как использовать команду ***du*** .\
В отличие от ***df*** который выводит информацию об использовании диска смонтированными файловыми системами, команда ***du*** дает вам оценку дискового пространства, используемого данными файлами или каталогами.

## Команда free в Linux <a href="#id-3-komanda-free-v-linux" id="id-3-komanda-free-v-linux"></a>

Сколько свободной оперативной памяти доступно в моей системе Linux? Достаточно ли свободной памяти для установки и запуска новых приложений?

В системах Linux вы можете использовать команду **free** чтобы получить подробный отчет об использовании памяти системой.

Команда **free** предоставляет информацию об общем объеме физической памяти и памяти подкачки, а также о свободной и используемой памяти.

### **Содержание**

* Как использовать команду **free**
* Отображение использования памяти в удобочитаемом формате
* Отображение использования памяти в других показателях
* Отображение итоговых значений столбца
* Непрерывно печатать результат

Синтаксис **free** команды следующий:

`free [OPTIONS]`\
При использовании без какой-либо опции команда **free** будет отображать информацию о памяти и подкачке в килобайтах. 1 килобайт (КиБ) равен 1024 байтам.

**free**\
Вывод будет включать три строки, заголовок, одну строку для памяти и одну для свопа:<br>

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FKvbxXeq5kfjFYqkth89o%2Fimage.png?alt=media&amp;token=dec7160a-cf77-4f85-aac1-db9b11689d94" alt=""><figcaption><p>Вывод команды free</p></figcaption></figure>

В более старых версиях Linux вывод может немного отличаться.

Вот что означает каждый столбец:

* total — это число представляет общий объем памяти, который может быть использован приложениями.
* used — Используемая память. Он рассчитывается как: used = total - free - buffers - cache
* free— Свободная / неиспользуемая память.
* shared— этот столбец можно игнорировать, поскольку он не имеет значения. Это здесь только для обратной совместимости.
* buff / cache — объединенная память, используемая буферами ядра, а также страничным кешем и блоками. Эта память может быть освобождена в любое время, если это необходимо приложениям.
* available— оценка объема памяти, доступного для запуска новых приложений без подкачки.

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

По умолчанию команда **free** показывает информацию о памяти в килобайтах. Чтобы просмотреть информацию в удобочитаемом формате (обычно в мебибайт и гибибайтах), используйте параметр **-h :**

```
free -h
```

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FkPR1akf4oPjWnvG2iMpu%2Fimage.png?alt=media&amp;token=22810302-a651-4048-859a-8c1e58d59e7f" alt=""><figcaption><p>Вывод команды free -h</p></figcaption></figure>

#### Отображение использования памяти в других показателях.

Команда free также позволяет вам указать единицы измерения памяти. Допустимые варианты:

* b , --bytes — отображать вывод в байтах.
* -kilo — отображать вывод в килобайтах (1 КБ = 1000 байт).
* -mega — отображать вывод в мегабайтах.
* -giga — Показать вывод в гигабайтах.
* -tera — Показать вывод в терабайтах.
* k , --kibi — Показать вывод в килобайтах. (1 КБ = 1024 байта). Это единица измерения по умолчанию.
* m , --mebi — Показать вывод в мегабайтах.
* g , --gibi — Показать вывод в гигабайтах.
* -tebi — отображать вывод в теробайтах.
* -peti — Показать вывод в перобайтах.
* -si — вместо 1024 используйте --mebi --si 1000. Например, --mebi --si равно --mega .

**Например, чтобы отобразить результат в мегабайтах, введите:**

```
free --mega
```

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FyMrftaDGp9mFQ3macaIb%2Fimage.png?alt=media&amp;token=e240367c-24d2-427d-b428-124567461d06" alt=""><figcaption><p>Вывод команды free --mega</p></figcaption></figure>

#### **Отображение итоговых значений столбца**

Чтобы отобразить строку, показывающую итоги столбца, используйте параметр **-t** . Это дает вам сумму памяти и свопа в столбцах total, used и free.

`free -h -t`<br>

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FecRioc5O3ZXmkg0xzqQx%2Fimage.png?alt=media&amp;token=4ee74f9d-6fee-4f13-b642-485a0c2dbcda" alt=""><figcaption><p>Вывод команды free -h -t</p></figcaption></figure>

#### **Непрерывно печатать результат**

Чтобы постоянно отображать информацию о памяти на экране, вызовите **free** с параметром  **-s** ( **--seconds** ), за которым следует число, определяющее задержку.

Например, чтобы распечатывать информацию о памяти каждые пять секунд, вы должны выполнить:

`free -s 5`<br>

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2F2tJsbFlDiCBntiEPcNSl%2Fimage.png?alt=media&amp;token=8d99f25d-abfd-4f81-b98c-81423e305285" alt=""><figcaption><p>Вывод команды free -s 5</p></figcaption></figure>

**free** команда будет продолжать отображать результат, пока вы не нажмете CTRL+C Это похоже на поведение команды **watch** .

Чтобы отображать результат определенное количество раз, используйте параметр **-c**              **( --count )**. В примере ниже команда выведет результат десять раз:

`free -s 5 -c 3`<br>

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2F2f9BLVUES4DMu93aKouM%2Fimage.png?alt=media&amp;token=c287d8c3-c348-4542-b989-cfaeb5abdde9" alt=""><figcaption><p>Вывод команды free -s 5 -c 3</p></figcaption></figure>

### Команда free в Linux с примерами <a href="#id-31-komanda-free-v-linux-s-primerami" id="id-31-komanda-free-v-linux-s-primerami"></a>

Автоматизируйте команду **free** и запускайте ее непрерывно или периодически\
Еще одна отличная особенность – возможность автоматизировать команду. Есть два варианта, которые помогают нам настроить этот инструмент:

Есть параметр ‘**-s**’, которая запускает команду free в течение заданного интервала секунд, пока пользователь не закроет программу (^ + C).\
Существует также «**-c**», который можно использовать отдельно или в сочетании с параметром секунд. Если вы введете только «**-c**» и целое число (n), команда будет запускаться n раз. По умолчанию используются интервалы в одну секунду.\
Допустим, вы хотите открыть несколько приложений и посмотреть, сколько используется памяти. Для тестового вывода мы будем использовать читаемый человеком формат, используя степени 1000 (Gb) вместо 1024 (GiB). Мы собираемся записать в течение 20 секунд, чтобы проанализировать воздействие. Мы собираем данные каждые 5 секунд, и будем делать это за 4 цикла. Вот этот пример, отформатированный для командной строки и ее вывода:

`free -h --si -s 5 -c 4`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FnKbuvkI50zUjvsXx5Asd%2Fimage.png?alt=media&amp;token=29cf8316-1d38-4f58-9703-3f80e182bad0" alt=""><figcaption></figcaption></figure>

Это покажет вам только один вывод для команды free, но этот вывод будет изменяться через регулярные промежутки времени.

`watch free -h`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FpfGNB9ytPN54OnrXQqOj%2Fimage.png?alt=media&amp;token=eeb0d8f4-687f-41cc-a121-cd586d3eca7a" alt=""><figcaption><p>Вывод команды watch free -h</p></figcaption></figure>

## Команда iostat в Linux <a href="#id-4-iostat" id="id-4-iostat"></a>

Процесс установки **iostat** очень прост. **iostat** является частью пакета **sysstat**, который можно установить на вашей соответствующей системе одной из команд ниже:

<mark style="color:orange;">Ubuntu / Debian</mark>

`sudo apt install sysstat`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FwXsQvhSRAGqqAbCmDL9g%2Fimage.png?alt=media&amp;token=f8db4bc4-e543-4ca3-8810-4fca99a3c3f4" alt=""><figcaption><p>Вывод команды apt install sysstat</p></figcaption></figure>

### **Запуск IOSTAT**

**IOSTAT** инструмент, который доступен через команду **iostat**. Введите эту команду, чтобы увидеть, как она работает:

`iostat`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FTH5cgeeJADi7ztyqAVh7%2Fimage.png?alt=media&amp;token=eea96ad7-2e93-4c98-b347-a673e08b5d07" alt=""><figcaption><p>Вывод команды iostat</p></figcaption></figure>

**Синтаксис iostat очень простой. Вам достаточно выполнить:**

`$ iostat опции`` `<mark style="color:orange;">`устройство`</mark>` `<mark style="color:green;">`интервал`</mark>

Параметры <mark style="color:orange;">устройство</mark> и <mark style="color:green;">интервал</mark> **необязательные**. Первый указывает по какому устройству показывать статистику, а второй, с каким интервалом обновлять данные. Давайте сначала рассмотрим опции программы, которые могут вам пригодится:

* с - отобразить только информацию об использовании процессора;
* d - отобразить только информацию об использовании устройств;
* h - выводить данные в отчёте в удобном для чтения формате;
* k - выводить статистику в килобайтах;
* m - выводить статистику в мегабайтах;
* o JSON - выводить статистику в формате JSON;
* p - вывести статистику по устройству и всех его разделам;
* x - вывести расширенную статистику;
* y - отображать статистику с момента запуска утилиты, а не системы;
* z - спрятать информацию о дисках, у которых нет активности.

Самый простой пример использования утилиты, это запустить её без параметров. Она выведет отчёт с со средней статистикой с момента включения системы до момента запуска программы:

`sudo iostat`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FOMYBuUQARleIdCKI3yJz%2Fimage.png?alt=media&amp;token=1a131455-6959-46fe-bb06-ff4b871f8688" alt=""><figcaption><p>Вывод команды iostat</p></figcaption></figure>

В первой части отчёта находится информация о загруженности процессора. Для просмотра данных в удобном формате выполните:

`sudo iostat -h`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FE8gbH7xoJezi0xEVlAbg%2Fimage.png?alt=media&amp;token=02afb4e9-1f80-43e7-a8d5-5adbef55a675" alt=""><figcaption><p>Вывод команды iostat -h</p></figcaption></figure>

Чтобы посмотреть данные по нужному устройству просто укажите это устройство:

`sudo iostat /dev/sda`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2F6sagVMkCsP9S4yEXUbzq%2Fimage.png?alt=media&amp;token=51fde5d5-6497-4c56-bfe8-005f079bde8d" alt=""><figcaption><p>Вывод команды iostat /dev/sda</p></figcaption></figure>

Можно посмотреть статистику по каждому разделу устройства, тогда надо воспользоваться опцией **-p**:

`sudo iostat -p /dev/sda`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FBbes5OGEuOqwoE3LLdfu%2Fimage.png?alt=media&amp;token=4570e414-eb37-4021-a233-3f339d940f52" alt=""><figcaption><p>Вывод команды iostat -p /dev/sda</p></figcaption></figure>

Чтобы утилита автоматически обновляла данные каждую секунду просто добавьте интервал. Например:

`sudo iostat -p /dev/sda 1`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2F0q9ON60iZr28H3CltJFm%2Fimage.png?alt=media&amp;token=e3a62957-a704-41fe-a9ee-56f1dd164e36" alt=""><figcaption><p>Вывод команды iostat -p /dev/sda 1</p></figcaption></figure>

Если вы не хотите чтобы утилита суммировала все данные с момента запуска операционной системы, то можно использовать опцию -y. Но работает она только если задан интервал:

`sudo iostat -y -p /dev/sda 1`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2F3UqaWEsHtEt9x7Wu4zir%2Fimage.png?alt=media&amp;token=2dd0b043-5571-4a33-bb58-c96f29c00bbe" alt=""><figcaption><p>Вывод команды iostat -y -p /dev/sda 1</p></figcaption></figure>

## Команда mpstat в Linux <a href="#id-5-mpstat" id="id-5-mpstat"></a>

### Отображение всей информации <a href="#id-51-otobrazhenie-vsei-informacii" id="id-51-otobrazhenie-vsei-informacii"></a>

Опция «**-А**», показывает всю информацию, которая может быть отображена с помощью команды **mpstat**, как показано ниже. Это действительно эквивалентно команде «-I ALL -u -P mpstat ALL» команды:

`mpstat -A`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FD8tDwIZ4sbjqQaRIq4QZ%2Fimage.png?alt=media&amp;token=9c5eb5e9-d5ed-4e10-8d83-d136515c97ee" alt=""><figcaption><p>Вывод команды mpstat -A (начало)</p></figcaption></figure>

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FsZYg0pMapKAnrddFQF2b%2Fimage.png?alt=media&amp;token=5d03189d-b502-4a5b-be7b-687b91928ca4" alt=""><figcaption><p>Вывод команды mpstat -A (конец)</p></figcaption></figure>

### Показать статистику CPU индивидуального процессора (или) ядра <a href="#id-52-pokazat-statistiku-cpu-individualnogo-processora-ili-yadra" id="id-52-pokazat-statistiku-cpu-individualnogo-processora-ili-yadra"></a>

Параметр «**-P ALL**», покажет все индивидуальные процессоры или ядра вместе со статистикой:

`mpstat -P ALL`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FVXO229dq936aJVmgWu1y%2Fimage.png?alt=media&amp;token=13828b0f-b814-4265-a8a7-044fcb66b993" alt=""><figcaption><p>Вывод команды mpstat -P ALL</p></figcaption></figure>

### Для отображения статистически о конкретном CPU или ядре, используйте опцию «-P», как показано ниже: <a href="#id-53-dlya-otobrazheniya-statisticheski-o-konkretnom-cpu-ili-yadre-ispolzuite-opciyu-p-kak-pokazano-niz" id="id-53-dlya-otobrazheniya-statisticheski-o-konkretnom-cpu-ili-yadre-ispolzuite-opciyu-p-kak-pokazano-niz"></a>

`mpstat -P 0`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FWM8Ikcl39filMDitMYvH%2Fimage.png?alt=media&amp;token=c79b937e-0c2d-47b0-920e-a6113b3459a4" alt=""><figcaption><p>Вывод команды mpstat -P 0</p></figcaption></figure>

### Можно выполнить «mpstat -V» чтобы показать версию утилиты: <a href="#id-54-mozhno-vypolnit-mpstat-v-chtoby-pokazat-versiyu-utility" id="id-54-mozhno-vypolnit-mpstat-v-chtoby-pokazat-versiyu-utility"></a>

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FZMMpIHWQpjxwaIHoy6G6%2Fimage.png?alt=media&amp;token=fad51680-10ec-441e-9940-9ccec4905285" alt=""><figcaption><p>Вывод команды mpstat -V</p></figcaption></figure>

### 5.5 Дополнительные опции <a href="#id-55-dopolnitelnye-opcii" id="id-55-dopolnitelnye-opcii"></a>

![](https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FiD6EwYLTOmhxpjU8YXxM%2Fimage.png?alt=media\&token=f54c0d32-40a2-4ebb-981b-4d685eabcc4a)

## Команда vmstat в Linux <a href="#id-6-vmstat" id="id-6-vmstat"></a>

Команда vmstat в Linux выводит статистику использования виртуальной памяти. Ниже приводится ее синтаксис:

```
vmstat [options] [delay [count]]
```

В базовом варианте вы просто выполняете команду vmstat без всяких опций.

```
vmstat
```

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FElHNJIt87iReQB3XDPwk%2Fimage.png?alt=media&amp;token=fb27b9fd-df43-468b-95d8-021138c930a2" alt=""><figcaption><p>Вывод команды vmstat</p></figcaption></figure>

**Procs**\
r: количество запущенных процессов (работающих или ожидающих выполнения).\
b: количество спящих процессов.

**Memory**\
swpd: объем используемой виртуальной памяти.\
free: объем свободной памяти.\
buff: количество памяти, используемой в качестве буферов.\
cache: объем памяти, используемой в качестве кеша.\
inact: количество неактивной памяти (опция **-a**).\
active: количество активной памяти. (опция **-a**)

**Swap**\
si: объем памяти, выгруженный с диска (/s).\
so: объем памяти, перенесенный на диск (/s).

**IO**\
bi: блоки, полученные от блочного устройства (blocks/s).\
bo: блоки, отправленные на блочное устройство (blocks/s).

**System**\
in: количество прерываний в секунду, включая часы.\
cs: количество переключений контекста в секунду.

**CPU**\
Здесь проценты от общего времени процессора.\
us: время, потраченное на запуск кода, не относящегося к ядру (время пользователя).\
sy: время, потраченное на выполнение кода ядра (системное время).\
id: время бездействия. До версии Linux 2.5.41 это включает время ожидания ввода-вывода.\
wa: время, проведенное в ожидании ввода/вывода. До Linux 2.5.41, включено в idle.\
st: время, украденное из виртуальной машины. До Linux 2.6.11 неизвестно.

`vmstat -a`

(active/inactive memory) - активная/неактивная память

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FcikU8xrVnDPdoQgXZdIJ%2Fimage.png?alt=media&amp;token=96b546dc-cd8d-4c31-af43-380bc7bca277" alt=""><figcaption><p>Вывод команды vmstat -a</p></figcaption></figure>

`vmstat -f`

(number of forks since boot) - количество вызовов fork (vfork и т.д.) с момента загрузки

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2Fv7kbj5HUlgnhAZuJ07kr%2Fimage.png?alt=media&amp;token=cb52cfa2-c85b-4a13-812f-5b0d8986b80f" alt=""><figcaption><p>Вывод команды vmstat -f</p></figcaption></figure>

`vmstat -d`

(disk statistics) - статистика диска

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FlKBiq9gfEFIk4rKIP2aw%2Fimage.png?alt=media&amp;token=cf67d9af-fe6e-454e-b8cc-5aaefb8c0444" alt=""><figcaption><p>Вывод команды vmstat -d</p></figcaption></figure>

`vmstat -D`

(summarize disk statistics) - (общая статистика диска)

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FjO02h62zh7a6XRRneVB3%2Fimage.png?alt=media&amp;token=2324bd2d-12ec-43a5-bda5-706a3b2bb4d5" alt=""><figcaption><p>Вывод команды vmstat -D</p></figcaption></figure>

```
vmstat -s
```

Команда, вызванная с опцией -s, записывает в стандартный поток вывода итоговый отчет, который содержит суммарные значения показателей использования памяти, подсчитанные за все время, прошедшее с момента инициализации системы.

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

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FOMATfJC67CzWjgJtt31R%2Fimage.png?alt=media&amp;token=c7ab4c5b-0ab1-4bf2-8852-cb692d2524b2" alt=""><figcaption><p>Вывод команды vmstat -s</p></figcaption></figure>

`vmstat --help`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2Fx5rVUTUchntlxFs3BsyB%2Fimage.png?alt=media&amp;token=9e659755-f034-44dd-aa6b-8ea9d85b1583" alt=""><figcaption><p>Вывод команды vmstat --help</p></figcaption></figure>

`vmstat 1 - 60` - через какое количество секунд выводить информацию

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2F8RCF7TWBASBiCdwDknuh%2Fimage.png?alt=media&amp;token=599d5992-89e8-469f-be71-76094086d358" alt=""><figcaption><p>Вывод команды vmstat 1</p></figcaption></figure>

## Команда "w" в Linux <a href="#id-7-utilitakomanda-w" id="id-7-utilitakomanda-w"></a>

Выводит краткую сводку о работающих в системе в данный момент пользователях (залогиненных пользователях), а также о том, какие процессы у них запущены

```
w
```

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FCefwjhLqloXZ75blPvkq%2Fimage.png?alt=media&amp;token=e9795b72-f7c2-4c71-ae4d-eda9043c16d9" alt=""><figcaption></figcaption></figure>

В таблице для каждого пользователя выводятся следующие поля:

```
USER — имя пользователя.
TTY — название терминала.
FROM — название удаленного компьютера или IP-адрес.
LOGIN — время входа в систему.
IDLE — время бездействия.
JCPU — время, использованное всеми процессами, подключенными к tty. Оно не включает завершенные фоновые задания, но включает фоновые задания, работающие в данный момент.
PCPU — время, использованное текущим процессом, который указан в поле WHAT.
WHAT — текущий процесс (командная строка текущего процесса).

```

```
w -h
```

Не выводить заголовок у таблицы.

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FBlHVroeqtt37hdH8bVdo%2Fimage.png?alt=media&amp;token=e10f4e89-975d-433b-8680-2906938ef2ba" alt=""><figcaption><p>Вывод команды w -h</p></figcaption></figure>

```
w -u
```

Игнорировать имена пользователей при определении времени текущего процесса и времени CPU.

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FiYBNV6BuGxOcuUTRPO4Q%2Fimage.png?alt=media&amp;token=9b1a2149-0de5-4b29-9dd4-a05444756e57" alt=""><figcaption><p>Вывод команды w -u</p></figcaption></figure>

```
w -s
```

Использовать сокращенный формат вывода. Не выводить колонки JCPU и PCPU.

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FMFUBku7Lpe5TUksRIL07%2Fimage.png?alt=media&amp;token=b355d612-a7a8-4805-ae31-9cbdf2a0557b" alt=""><figcaption><p>Вывод команды w -s</p></figcaption></figure>

```
w -f
```

Включить или выключить вывод поля from, которое соответствует имени удаленного хоста (remote hostname). В зависимости от дистрибутива Linux (версии утилиты w), поле from может выводиться или не выводиться по умолчанию.

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2F13Cb9sNadUjA6sD3ky8A%2Fimage.png?alt=media&amp;token=9351e88c-24aa-43e6-9ca8-42bf8e69ae34" alt=""><figcaption><p>Вывод команды w -f</p></figcaption></figure>

```
w -i
```

Выводить в поле from IP-адрес вместо имени хоста (hostname), если это возможно.

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FVk2VMBbViaX0W53jeR0d%2Fimage.png?alt=media&amp;token=876d37be-85f4-4fde-b1eb-02c3d2e84b4b" alt=""><figcaption><p>Вывод команды w -i</p></figcaption></figure>

```
w -o
```

Выводить информацию в старом формате. Время, которое меньше 1 минуты, не выводится.

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FWYOlSAwq43ZVDGsv4ThZ%2Fimage.png?alt=media&amp;token=9121dd3e-0e56-4c86-ab0b-6249796f34d6" alt=""><figcaption><p>Вывод команды w -o</p></figcaption></figure>

```
w -V
```

Вывести версию утилиты w.

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FYMBHT4h4VEQwm9qy3s8E%2Fimage.png?alt=media&amp;token=49edc290-b49a-4a48-a221-75b8ef508648" alt=""><figcaption><p>Вывод команды w -V</p></figcaption></figure>

## Утилита htop <a href="#id-8-utilita-htop" id="id-8-utilita-htop"></a>

![https://i.imgur.com/UURruNP.png](https://i.imgur.com/UURruNP.png)

### **Как установить htop**

`sudo apt install htop`

![](https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FqLTOjCWMKZqTOYsf0thw%2Fimage.png?alt=media\&token=85bf9a5c-7740-4f03-9cf1-a474f76f0186)

**Как просмотреть все процессы в Linux**

Команду **htop** можно запускать как с правами обычного пользователя:

`htop`

Так и с привилегиями суперпользователя, для этого используйте sudo:

`sudo htop`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2Fwa3Y3UqE1Pv0vehzGt0B%2Fimage.png?alt=media&amp;token=950036f5-9889-4731-aa89-8899690a0b82" alt=""><figcaption><p>Вывод команды htop</p></figcaption></figure>

*Чтобы программа выводила новые данные раз в 5 секунд:*`sudo htop -d 50`

### **Как вывести процессы в виде дерева**

*Для вывода процессов в виде дерева используйте опцию **-t**:*`sudo htop -t`

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FvEnigTmIeWL274bPYaYX%2Fimage.png?alt=media&amp;token=866cca9e-d6e8-48a4-a535-5445d60684b4" alt=""><figcaption><p>Вывод команды htop -t</p></figcaption></figure>

## Дополнительная литература

{% embed url="<https://habr.com/ru/articles/165855/>" %}
