Как управлять процессами в терминале Linux: 10 команд

Быстрые ссылки
- top
- htop
- ps
- pstree
- kill
- pgrep
- pkill & killall
- renice
- xkill
Краткое введение
Процессы — это выполняющиеся программы. Каждая команда ниже помогает по‑разному: одни показывают, что запущено, другие — ищут процессы по имени, третьи — изменяют приоритет или убивают процесс. Многие команды выполняют одну задачу и хорошо сочетаются между собой — это философия Unix. Графические надстройки (например, htop) упрощают взаимодействие, но полезно знать базовые утилиты.
top
Команда top — классический способ увидеть использование ресурсов системы и процессы, которые загружают CPU и память. top выводит список процессов в реальном времени, сортируя их по загрузке процессора по умолчанию.

Как пользоваться:
- Запустите top просто введя top в терминале.
- Нажмите q, чтобы выйти.
- Для немедленного прерывания текущего процесса в терминале обычно работает Ctrl-C (это прерывает процесс в интерактивной сессии).
Совет: используйте top на удалённой машине по SSH, когда нет графического интерфейса.
htop
htop — улучшенная версия top с цветным и удобным интерфейсом. На большинстве дистрибутивов htop не установлен по умолчанию; в Ubuntu его можно установить так:
sudo apt-get install htop
Преимущества htop:
- Навигация стрелками и действия через клавиши F (уничтожение процесса, изменение приоритета и т. д.).
- Возможность сортировки по колонкам одной клавишей.
- Интуитивное отображение дерева процессов и использования ресурсов.
Мы уже рассматривали htop подробнее в отдельных материалах — он удобен как на рабочей станции, так и на сервере с графической оболочкой.
ps
Команда ps перечисляет запущенные процессы. Базовый список всех процессов можно получить так:
ps -A

Если процессов много, удобно прокрутить вывод через less:
ps -A | less
Нажмите q для выхода из less.
Чтобы найти конкретный процесс, комбинируйте ps с grep. Например, поиск процесса Firefox:
ps -A | grep firefox
Эта комбинация полезна, когда нужно увидеть PID и другие метаданные процесса. Альтернативы: ps aux для расширённого вывода, ps -ef для формата с родителями процессов.
pstree
pstree показывает процессы в виде дерева — полезно, чтобы понять, какие процессы были порождены другими (родительская/дочерняя связь).

Пример: X-сервер и графическая среда появятся под дисплей-менеджером, который их запустил. Используйте pstree, чтобы отследить происхождение фоновых задач.
kill
Команда kill отправляет сигнал процессу по его PID (идентификатору процесса). PID можно узнать через ps, top или pgrep.
kill PID

По умолчанию kill отправляет сигнал TERM (вежливо попросить процесс завершиться). Если процесс не реагирует, используйте жесткий сигнал:
kill -9 PID
или
kill -KILL PID
Важно: -9 принудительно завершает процесс, но не даёт ему корректно освободить ресурсы.
pgrep
pgrep ищет PID по шаблону имени процесса. Это удобно, когда вы знаете имя процесса, но не хотите фильтровать вывод ps.
pgrep firefox

pgrep можно использовать в скриптах для автоматизации управления процессами (поиск PID и дальнейшие действия).
pkill и killall
pkill и killall убивают процессы по имени — не нужно сначала получать PID. Пример для Firefox:
pkill firefox
killall firefox
Отличия:
- pkill работает по шаблону (регулярные выражения поддерживаются), полезно для точного сопоставления.
- killall на некоторых системах различается по поведению (в некоторых ОС killall может означать «убить все процессы»), поэтому проверяйте man-страницу в вашем дистрибутиве.
renice
renice изменяет «nice»‑значение уже запущенного процесса — это влияет на планировщик и приоритет выполнения. Значения варьируются от -20 (высокий приоритет) до 19 (низкий приоритет). По умолчанию процесс запускается с nice 0.
renice 19 PID

Замечания:
- Для повышения приоритета (отрицательное значение) требуются root-права. Используйте sudo:
sudo renice -19 PID
- Часто используют pgrep вместе с renice, чтобы менять приоритет группе процессов.
xkill
xkill — удобный способ завершить зависшие графические окна. После запуска курсор превращается в крестик: кликните по окну, чтобы завершить процесс, который его владеет. Если передумали — клик правой кнопкой отменит действие.
xkill можно запускать не только из терминала: Alt-F2 → введите xkill и Enter. Часто привязывают xkill к горячей клавише для быстрого завершения проблемных окон.
Когда эти команды не сработают
- Если процесс заморожен на уровне ядра (например, в состоянии D — uninterruptible sleep), kill -9 может не помочь. В таких случаях потребуется перезагрузка или устранение проблемы в драйвере/оборудовании.
- Для контейнеров и изолированных сред (Docker, systemd‑cgroups) нужен доступ в пространство PID контейнера или использование команд управления контейнерами (docker kill, podman kill).
- Если у вас недостаточно прав, некоторые действия (повышение приоритета, завершение системных демонов) будут недоступны без root.
Альтернативные подходы
- systemctl stop/restart — для сервисов, управляемых systemd, завершающий процесс лучше через менеджер служб.
- docker kill / kubectl delete pod — для контейнеризованных приложений используйте средства оркестрации.
- ss / netstat — если проблема связана с сетью, сначала проверьте сокеты, чтобы не убивать процессы слепо.
Инструменты и подсказки: шпаргалка команд
- Просмотр: top, htop, ps -A, ps aux
- Поиск PID: pgrep <имя>, ps -A | grep <имя>
- Дерево процессов: pstree -p
- Убить по PID: kill PID | kill -9 PID
- Убить по имени: pkill имя | killall имя
- Изменить приоритет: renice <значение> PID
- Графически убить окно: xkill
Примеры команд
ps -ef | grep nginx
pgrep -u www-data nginx
sudo renice -10 1234
pkill -f “java -jar myapp.jar”
Ментальные модели и быстрые правила
- «Найдите — посмотрите — примите действие»: сначала определите PID (pgrep/ps/top), затем проверьте контекст (pstree/top), и только потом бейте (kill/pkill).
- Не используйте kill -9 как первый шаг — сначала дайте процессу шанс корректно завершиться (SIGTERM), чтобы избежать утечек или повреждения данных.
- Преференцию отдавайте управляющим инструментам (systemctl, docker), а не принудительному убийству, если вы работаете с сервисами.
Контрольные списки по ролям
Для администратора системы:
- Проверить, какой сервис управляет процессом (systemctl status).
- Попытаться graceful-остановку через systemctl stop или service stop.
- Если не помогает, изучить логи (journalctl) и потом применить kill.
Для разработчика локально:
- Использовать htop для быстрой диагностики.
- renice для снижения приоритета фоновых задач при отладке.
- pkill -f для остановки приложений по командной строке.
Для пользователя рабочего стола:
- xkill для закрытия зависшего окна.
- Проверить процессы браузера в htop перед убийством, чтобы не потерять данные.
Шаблон тактики при зависании приложения
- Найдите процесс: pgrep <имя> или ps -A | grep <имя>.
- Проверьте нагрузку: top или htop.
- Попробуйте SIGTERM: kill PID.
- Если не ответил — SIGKILL: kill -9 PID.
- Если процесс в состоянии D — проверьте dmesg и логи ядра.
- Если сервис — используйте systemctl и затем изучите логи.
Критерии приёмки
- Приложение завершено и не отображается в ps -A.
- CPU/память вернулись к ожидаемому уровню.
- Для сервисов — systemctl status показывает inactive/failed с понятной причиной.
Риски и смягчения
- Риск: жесткое убийство может оставить файл блокировки или повредить данные. Смягчение: сначала SIGTERM, проверка логов.
- Риск: убили не тот процесс по общему имени. Смягчение: использовать pgrep -a или ps -ef | grep, чтобы увидеть командную строку процесса.
Краткое резюме
Знание комбинации top/htop, ps/pstree, pgrep и kill дает полный набор инструментов для управления процессами в Linux. Используйте менеджеры служб для системных демонов, не злоупотребляйте принудительным завершением, и привязывайте xkill или htop к привычным рабочим процессам для быстрой реакции.
Есть команда или трюк, который вы используете иначе? Оставьте комментарий и поделитесь опытом.
Похожие материалы
Гиперсэмплинг: включение supersampling и советы
Как ускорить запуск Windows 11
Экспорт контактов Gmail: CSV и vCard шаг за шагом
Включить 2FA в 1Password быстро
Как слушать Spotify офлайн на Windows и Mac