Linux

Мониторинг процессов в Linux: полное руководство по командам и инструментам

Этот гайд научит вас эффективно мониторить процессы в Linux, используя как классические команды, так и современные утилиты. Вы сможете анализировать использование CPU и памяти, находить «зависшие» процессы и управлять ими.

Обновлено 15 февраля 2026 г.
10-15 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 20.04+CentOS 7+Debian 10+Fedora 35+

Введение / Зачем это нужно

Мониторинг процессов — одна из ключевых задач администрирования Linux. Он позволяет:

  • Диагностировать высокую нагрузку на CPU или память.
  • Находить «зависшие» или потребляющие слишком много ресурсов процессы.
  • Управлять службами и пользовательскими задачами.

После прохождения этого гайда вы сможете уверенно использовать командную строку для анализа и управления процессами на любом Linux-сервере или рабочей станции.

Требования / Подготовка

Перед началом убедитесь, что:

  1. У вас есть доступ к терминалу (локально или через SSH).
  2. Вы имеете базовое представление о командной строке.
  3. Для некоторых операций (завершение чужих процессов, просмотр всех служб) требуются права sudo.
  4. Рекомендуется установить htop (см. Шаг 1), но не обязательно — основные команды работают везде.

Пошаговая инструкция

Шаг 1: Установка дополнительных инструментов (опционально)

По умолчанию в большинстве дистрибутивов есть ps и top. Для удобства установите htop — цветной интерактивный мониторинговый инструмент.

Ubuntu/Debian:

sudo apt update
sudo apt install htop

CentOS/RHEL/Fedora:

sudo yum install htop  # CentOS 7
sudo dnf install htop  # CentOS 8+/Fedora

Проверьте установку: htop --version.

Шаг 2: Просмотр списка процессов через ps

Команда ps выводит статический снимок процессов. Самый частый вариант — ps aux:

ps aux

Ключевые столбцы:

  • USER — владелец процесса.
  • PID — идентификатор процесса (нужен для управления).
  • %CPU / %MEM — использование ресурсов.
  • COMMAND — запущенная команда.

Полезные варианты:

  • Сортировка по памяти (топ-10):
    ps aux --sort=-%mem | head -n 11  # +1 строка заголовка
    
  • Только PID, имя и использование CPU:
    ps -eo pid,comm,%cpu --sort=-%cpu | head
    
  • Процессы конкретного пользователя:
    ps -u username
    

Шаг 3: Интерактивный мониторинг с top

top — классический инструмент для реального времени. Просто введите top в терминале.

Основные действия в top:

  • Сортировка: нажмите P (по CPU), M (по памяти), T (по времени).
  • Завершение процесса: нажмите k, введите PID, затем сигнал (по умолчанию 15 — SIGTERM). Для принудительного завершения используйте 9 (SIGKILL).
  • Выход: q.

Настройка отображаемых столбцов:

  • Нажмите f для добавления/удаления полей (например, VIRT — виртуальная память, RES — резидентная).
  • Для отображения путей к исполняемым файлам: в настройках (f) найдите COMMAND и переключите в режим полного пути.

Шаг 4: Использование htop для расширенного контроля

htop предоставляет более удобный интерфейс с мышью (если поддерживается) и цветовой индикацией.

Запуск: просто htop.

Ключевые возможности:

  • Прокрутка списка процессов (колесико мыши или стрелки).
  • Древо процессов: F5.
  • Сортировка: F6 → выберите столбец (CPU, MEM, TIME+).
  • Завершение процесса: выделите строку → F9 → выберите сигнал (SIGTERM, SIGKILL и др.).
  • Фильтрация: F4 → введите часть имени процесса.
  • Поиск: F3 → введите запрос.

Пример: чтобы найти все процессы, связанные с nginx, нажмите F4 и введите nginx.

Шаг 5: Мониторинг служб systemd

Если система использует systemd (современные дистрибутивы), процессы часто запускаются как службы.

Проверка статуса службы:

systemctl status nginx  # вместо nginx — имя службы

Просмотр всех активных служб:

systemctl list-units --type=service --state=running

Логи службы в реальном времени:

journalctl -u nginx -f  # -f — follow, отслеживание новых записей

Перезапуск/остановка службы:

sudo systemctl restart nginx
sudo systemctl stop nginx

Шаг 6: Автоматизация сбора данных

Для регулярного сбора статистики создайте простой bash-скрипт.

Пример скрипта monitor_processes.sh:

#!/bin/bash
# Скрипт для периодического вывода топ-5 процессов по CPU и памяти

echo "=== $(date) ==="
echo "Топ-5 по CPU:"
ps -eo pid,comm,%cpu --sort=-%cpu | head -n 6
echo ""
echo "Топ-5 по памяти:"
ps -eo pid,comm,%mem --sort=-%mem | head -n 6
echo ""

Сделайте его исполняемым: chmod +x monitor_processes.sh. Запускайте вручную или добавьте в crontab для периодического выполнения (например, каждые 5 минут).

Проверка результата

Вы успешно освоили мониторинг процессов, если:

  • Можете вывести список процессов и отсортировать его по интересующему ресурсу.
  • Находите PID конкретного приложения (например, nginx или python).
  • Завершаете ненужный процесс с помощью kill или через интерфейс top/htop.
  • Просматриваете логи службы systemd и понимаете её статус.

Быстрая проверка:

  1. Запустите htop — вы должны увидеть обновляющийся список.
  2. Найдите процесс с высоким %CPU и завершите его (например, stress-ng если установлен) через F9.
  3. Убедитесь, что процесс исчез из списка.

Возможные проблемы

ПроблемаРешение
htop не устанавливается (нет пакета)Используйте top или соберите из исходников. В очень старых дистрибутивах может отсутствовать — обновите систему.
Не видны процессы других пользователей (в ps/top)Запускайте команды с sudo или切换те пользователя (su -).
В top нет столбца с путями к командамНажмите f, найдите COMMAND, нажмите d для редактирования, выберите c (command line/path).
Процесс не завершается даже после kill -9Процесс может находиться в состоянии D (uninterruptible sleep). Обычно это означает проблему с файловой системой или NFS. Перезагрузка — часто единственный выход.
systemctl не найденСистема не использует systemd (возможно, SysVinit). Используйте service или init.d скрипты.
При сортировке в ps вывод неверныйУбедитесь, что используете правильные опции. Для числовых полей (%cpu, %mem) нужен --sort=-%cpu (с минусом для убывания).

Примечание: Для управления процессами других пользователей почти всегда требуется sudo. Будьте осторожны с kill -9 — это принудительное завершение без возможности сохранения данных.

Часто задаваемые вопросы

Как найти процесс, который использует больше всего памяти?
Что делать, если процесс не завершается командой kill?
Как отслеживать изменения списка процессов в реальном времени?
В чем разница между `ps` и `top`?

Полезное

Установка дополнительных инструментов (опционально)
Просмотр списка процессов через ps
Интерактивный мониторинг с top
Использование htop для расширенного контроля
Мониторинг служб systemd
Автоматизация сбора данных