Введение / Зачем это нужно
Мониторинг процессов — одна из ключевых задач администрирования Linux. Он позволяет:
- Диагностировать высокую нагрузку на CPU или память.
- Находить «зависшие» или потребляющие слишком много ресурсов процессы.
- Управлять службами и пользовательскими задачами.
После прохождения этого гайда вы сможете уверенно использовать командную строку для анализа и управления процессами на любом Linux-сервере или рабочей станции.
Требования / Подготовка
Перед началом убедитесь, что:
- У вас есть доступ к терминалу (локально или через SSH).
- Вы имеете базовое представление о командной строке.
- Для некоторых операций (завершение чужих процессов, просмотр всех служб) требуются права sudo.
- Рекомендуется установить
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и понимаете её статус.
Быстрая проверка:
- Запустите
htop— вы должны увидеть обновляющийся список. - Найдите процесс с высоким
%CPUи завершите его (например,stress-ngесли установлен) черезF9. - Убедитесь, что процесс исчез из списка.
Возможные проблемы
| Проблема | Решение |
|---|---|
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 — это принудительное завершение без возможности сохранения данных.