Гид по технологиям

Управление процессами в Linux: команды и практика

• 8 min read • Linux • Обновлено 13 Dec 2025
Управление процессами в Linux: команды и практика
Управление процессами в Linux: команды и практика

Несколько приложений на ноутбуке с Linux.

Быстрые ссылки

  • Процессы и Linux
  • Команда top: динамическая панель системы
  • Команда htop: альтернативная панель
  • Команда ps: вывод процессов в терминале
  • Команда pstree: дерево процессов
  • Команда kill: завершение по PID
  • Команда pgrep: поиск по имени
  • Команды pkill и killall: массовое завершение
  • Команда renice: приоритеты CPU
  • Команда xkill: только для X (GNOME)
  • Набор проверенных практик

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

Процессы и Linux

Процесс — это выполняющаяся программа или её часть в памяти. Ядро Linux создаёт первый процесс пользовательского пространства (обычно systemd) при загрузке. Каждому процессу соответствует уникальный идентификатор PID. PID 1 обычно занят systemd (или другим init-процессом) и является предком большинства процессов.

Краткие определения:

  • PID: идентификатор процесса.
  • Parent/Child: родительский процесс и его потомки.
  • Nice value: приоритет планировщика CPU (ниже значение = выше приоритет).

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

Факты и диапазоны:

  • Значения nice: от -19 до 20 (по умолчанию 0).
  • Сигнал SIGKILL (9) немедленно завершает процесс, SIGTERM (15) предлагает корректное завершение.

Команда top — динамическая панель системы

Команда top показывает постоянно обновляемый список процессов и статистику по ним: использование CPU, памяти, время выполнения и т.д. Каждая строка — отдельный процесс, столбцы сортируются по значению.

Окно терминала с запущенной программой top и графиками.

Полезные сочетания клавиш в top:

  • Ctrl+Shift+M — сортировать по колонке %MEM (память).
  • Shift+P — сортировать по колонке %CPU (процессор).
  • Нажать дважды на сортируемую колонку — поменять порядок сортировки.
  • k — запрос на завершение процесса по PID (введите PID и сигнал).

Пример: чтобы отправить SIGKILL (9), введите k, затем PID, затем 9.

Советы по использованию top:

  • Используйте top для быстрого обнаружения «тяжёлых» процессов.
  • Для долговременного мониторинга лучше настроить сбор логов или использовать htop/атрибуты grafana/prometheus.

Команда htop — более удобный интерактивный монитор

htop — это более дружелюбная версия top с наглядной цветовой схемой и настраиваемыми панелями. Столбцы и графики легко настраиваются, а навигация с помощью клавиш и мыши более интуитивна.

Окно терминала с программой htop и меню сигналов, выделен SIGKILL.

Как завершить процесс в htop:

  • Выделите процесс стрелками или мышью.
  • Нажмите k или F9.
  • Выберите сигнал (обычно SIGTERM, а затем SIGKILL, если не ответит).
  • Нажмите Enter.

Когда использовать htop:

  • Интерактивная отладка на рабочей станции.
  • Быстрый анализ потребления ресурсов.
  • Когда нужна визуальная фильтрация и сортировка.

Команда ps — список процессов в терминале

ps показывает снимок процессов в момент запуска команды. По умолчанию отображаются процессы текущего пользователя. Ключ -e показывает все процессы.

ps
ps -e

Использование команды ps в терминале, два варианта: с опцией -e и без.

Поиск по имени через grep:

ps -e | grep firefox

Передача вывода ps в grep для поиска процесса firefox.

Использование –forest для древовидного вывода помогает увидеть родительские и дочерние процессы — важно, потому что завершение родителя завершит и детей:

ps -e --forest

Использование опции --forest с ps для вывода дерева процессов.

Применение:

  • Используйте ps для скриптов и одноразовых снимков состояния.
  • В сочетании с grep — для быстрого поиска по имени.

Команда pstree — наглядное дерево процессов

pstree рисует компактное дерево процессов, показывая связи родитель-потомок. Повторяющиеся одинаковые процессы отображаются как name-N*[children].

Синтаксис и примеры:

parent-5*[child-processes]
parent-3*[{name-of-parent}]

Ключи:

  • -p — показать PID рядом с именами процессов.
  • -T — скрыть потоки (threads), чтобы уменьшить «шум».
pstree -p
pstree -p -T
pstree -pT 14937

Использование pstree с опцией -p для отображения PID.

Скрытие потоков в pstree для упрощённого отображения.

Запуск pstree, начиная с указанного PID.

Когда применять pstree:

  • Для понимания иерархии процессов и поиска предков/потомков.
  • При анализе, какие дочерние процессы будут убиты вместе с родителем.

Команда kill — завершение процесса по PID

kill отправляет выбранный сигнал процессу по PID. Если процесс принадлежит другому пользователю или является системным, потребуется sudo.

Пример:

kill 15197
pstree -pT 14937

Использование kill для завершения процесса и проверки через pstree.

Рекомендуемый порядок действий:

  1. Попробуйте SIGTERM (15) — позволяет процессу аккуратно завершиться и освободить ресурсы.
  2. Если не помогло — SIGKILL (9) — немедленное уничтожение процесса.

Примечание: SIGKILL нельзя перехватить или обработать.

Команда pgrep — поиск процессов по имени

pgrep возвращает PID-ы процессов, соответствующих шаблону. Это полезно для «сухого» прогона перед применением pkill или kill.

Пример поиска с выводом имён:

pgrep -l fox
pgrep -l fire

Поиск pgrep для процессов с подстрокой fox.

Поиск pgrep для процессов с подстрокой fire.

Совет: используйте точные шаблоны (регулярные выражения), чтобы не убить лишние процессы.

Команды pkill и killall — массовое завершение

pkill и killall принимают имя процесса и отправляют сигнал всем совпадающим процессам. Разница:

  • pkill может работать с частичными шаблонами и регулярными выражениями.
  • killall обычно ожидает точное имя процесса.

Пример последовательности:

pgrep -l fire
pkill fire
pgrep -l fire

Использование pgrep, pkill и повторной проверки через pgrep.

Осторожно: pkill с общими шаблонами может завершить нежелательные процессы (например, dbus и dbus-daemon).

Команда renice — корректировка приоритета

renice изменяет nice value процесса, влияя на его приоритет при планировании CPU. Диапазон значений: -19 (наивысший приоритет) до 20 (наименьший приоритет). По умолчанию процессы запускаются с nice=0.

Примеры:

pgrep drain
renice 15 18577

Поиск PID через pgrep и изменение nice на 15 через renice.

Для уменьшения значения nice (улучшения приоритета) требуется sudo:

pgrep drain
renice 0 18577
sudo renice 0 18577

Попытка изменить nice без sudo и с sudo: первая команда не прошла, вторая — успешна.

Практика:

  • Поднимайте nice для фоновых задач, которые должны ждать.
  • Понижайте nice только для критических сервисов и с осторожностью.

Команда xkill — только для X (GNOME)

xkill работает в окружении X (не в Wayland). После запуска курсор изменяется на крестик или другой символ; щелчок по окну завершает процесс графического приложения.

Работа xkill в терминале; указатель заменён на изображение «череп и кости».

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

Набор проверенных практик

Важно иметь методику и сценарии действий. Ниже — практические чек-листы, playbook и руководство по принятия решения.

Playbook: безопасное завершение процесса (шаги)

  1. Идентификация: используйте ps, pgrep, pstree, top или htop, чтобы найти PID и понять контекст процесса.
  2. Оценка риска: определить, является ли процесс системным или критичным (когда в сомнении — не убивать).
  3. Попросить корректного завершения: отправить SIGTERM (kill -15 PID) и подождать 5–10 секунд.
  4. Повторная проверка: pstree или ps для подтверждения.
  5. Жёсткое завершение при необходимости: SIGKILL (kill -9 PID).
  6. После завершения: проверить журналы (journalctl, /var/log), при необходимости перезапустить сервис через systemctl.

Критерии приёмки

  • Процесс завершён и не оставляет зомби.
  • Системные сервисы работают корректно.
  • Нет критической потери данных.

Чек-листы по ролям

Системный администратор:

  • Проверил PID и деревья процессов.
  • Проверил логи systemd/journalctl.
  • Использовал systemctl для перезапуска сервисов, если возможно.
  • Зарезервировал план отката (скрипт перезапуска, резервные копии).

Разработчик:

  • Собрал дамп состояния процесса, если нужно (gcore, strace).
  • Выполнил анализ логов приложения.
  • Применил SIGTERM и, при необходимости, SIGKILL.

Служба поддержки / Helpdesk:

  • Выполнил pgrep и pskill/kill с уточнением у администратора.
  • Вёл запись шагов и времени действия.
  • Сообщил пользователю об ожидаемых последствиях.

Шаблон быстрого контроля (cheat sheet)

ЗадачаКоманда
Показать все процессыps -e
Найти процесс по имениpgrep -l <имя>
Древо процессовpstree -pT
Завершить процесс по PIDkill (потом kill -9)
Завершить по имени (шаблон)pkill <шаблон>
Установить nicerenice <значение>
Интерактивный мониторhtop / top

Decision flowchart (Mermaid)

flowchart TD
  A[Процесс ведёт себя некорректно?] -->|Нет| Z[Наблюдать]
  A -->|Да| B[Идентифицировать PID и контекст]
  B --> C{Критичный процесс?}
  C -->|Да| D[Связаться с администратором; не убивать]
  C -->|Нет| E[Попробовать SIGTERM]
  E --> F[Процесс завершился?]
  F -->|Да| Z
  F -->|Нет| G[Проанализировать логи, попытаться перезапустить сервис]
  G --> H[Процесс отвечает?]
  H -->|Да| Z
  H -->|Нет| I[Отправить SIGKILL и повторить проверку]
  I --> Z

Когда эти инструменты дают сбой — примеры и альтернативы

Контрпримеры / ограничения:

  • Wayland: xkill не работает. Используйте системный монитор DE или kill по PID.
  • Процессы в контейнерах: команды на хосте могут не видеть PID-ы внутри контейнера. Используйте docker exec / kubectl exec.
  • Zombie-процессы: сигнал SIGKILL не уберёт зомби; требуется, чтобы родитель корректно обработал завершение, или рестарт родителя/системы.

Альтернативные подходы:

  • Docker/k8s: управляйте процессами через контейнерные инструменты (docker kill, kubectl delete pod).
  • cgroups: ограничьте потребление ресурсов вместо принудительного завершения.
  • systemd-run/systemctl: управляйте службами через systemd (systemctl restart), а не через pkill.

Безопасность и приватность

  • Не используйте pkill с общими шаблонами в сценариях с sudo без полной уверенности.
  • Логи могут содержать личные данные; при анализе соблюдайте внутренние политики безопасности и GDPR, если они применимы.
  • Для удалённой работы используйте зашифрованные соединения (SSH) и двухфакторную аутентификацию для аккаунтов с правом sudo.

Тесты и критерии приёмки

Тестовые сценарии для проверки корректного завершения процесса:

  1. Запустить тестовый процесс, отправить SIGTERM, проверить, что он корректно завершился и освободил файлы.
  2. Запустить процесс с дочерними процессами, убить родителя, проверить, что дети завершены.
  3. Попробовать renice на не-своём процессе без sudo — удостовериться, что операция блокируется.
  4. Проверить xkill в X и убедиться, что идентифицированное окно завершается.

Критерии приёмки:

  • Ожидаемое поведение достигнуто без негативного влияния на системные сервисы.
  • Процесс не оставил открытых дескрипторов файлов или замороченных состояний.

Советы по отладке перед убийством процесса

  • Посмотрите логи: journalctl -u или /var/log/.
  • Используйте strace для отслеживания системных вызовов: strace -p .
  • Снимите дамп памяти при необходимости: gcore (требует места на диске).

Итог

Эти инструменты дают полный набор возможностей для наблюдения, управления и корректного завершения процессов в Linux. Главное — соблюдать осторожность: всегда понимать контекст процесса и потенциальные последствия его завершения. Если сомневаетесь, сначала собирайте данные и консультируйтесь с коллегами.

Краткое резюме действий:

  • Найдите PID и иерархию (pgrep/ps/pstree).
  • Предложите корректное завершение (SIGTERM), дайте время.
  • Применяйте SIGKILL только при необходимости.
  • Используйте renice для корректировки приоритетов, а systemctl для управления системными сервисами.

Полезные команды напоследок:

ps -e --forest
pgrep -l <шаблон>
pkill <шаблон>
kill 
kill -9 
renice 10 
htop
pstree -pT
xkill

Спасибо за внимание. Будьте аккуратны при управлении процессами — это инструмент, который экономит время, но требует ответственности.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро