Как завершить приложение или процесс в Linux
Краткое введение
Windows имеет Ctrl+Alt+Delete, macOS — Command+Option+Escape; у Linux свои инструменты для принудительного завершения зависших графических приложений и фоновых процессов. Конкретные графические утилиты зависят от рабочего окружения (GNOME, KDE, Xfce и т. п.), но базовые подходы похожи.
Важно: «убить» процесс — это термины из UNIX-среды: завершение процесса может привести к потере несохранённых данных. Прежде чем принудительно завершать процесс, попытайтесь сохранить данные обычными средствами.
Как завершить приложение в графическом интерфейсе
Современные рабочие столы часто умеют автоматически распознавать неотвечающие окна. Обычное поведение:
- Окно затемняется или помечается как «не отвечает».
- Нажатие кнопки закрытия может вызвать диалог с вариантами: «Подождать» или «Завершить». Если окно отрисовывает собственный заголовок, менеджер окон может не увидеть зависание.

Быстро: xkill
Если нужен быстрый способ заставить графическое окно исчезнуть, используйте утилиту xkill.
- В некоторых окружениях комбинация Ctrl+Alt+Esc активирует xkill.
- Можно открыть «Выполнить команду» (обычно Alt+F2) и ввести
xkill. - Либо откройте терминал и выполните:
xkillКурсор изменится на крестик. Кликните по окну, и утилита определит связанный с окном процесс и завершит его сразу. Окно мгновенно исчезнет.

Примечание: xkill работает в X-сессиях. В Wayland‑сессиях (новые версии GNOME, KDE) xkill может не работать; используйте средства окружения рабочего стола.
Системный монитор рабочего стола
У большинства окружений есть графический «Диспетчер задач»/«Системный монитор». Например, в GNOME и производных откройте System Monitor, чтобы увидеть список процессов и завершить любой из них.

Шаги:
- Откройте System Monitor или аналогичный инструмент (KSysGuard, XFCE Task Manager и т. п.).
- Найдите зависшее приложение в списке.
- Выберите процесс и нажмите «Завершить процесс» или «Принудительно завершить».
Если окно не отображается в списке окон, оно всё ещё может существовать как фоновый процесс — System Monitor покажет и фоновые процессы.

Как завершить процесс из терминала
Работа с терминалом даёт более гибкий контроль и подходит для серверов и удалённых машин.
Коротая цель: найти PID (process ID) и отправить сигнал завершения. По умолчанию используют сигналы SIGTERM (мягкий запрос на завершение) и SIGKILL (принудительное завершение).
- SIGTERM — номер 15, позволяет процессу корректно завершить работу и освободить ресурсы.
- SIGKILL — номер 9, немедленное завершение процесса системой, процесс не успевает выполнить очистку.
Поиск процесса: ps и grep
Один из базовых способов — отфильтровать вывод ps:
ps aux | grep firefoxЭта команда покажет строки с именем firefox; в выводе вы увидите PID — число в колонке сразу после имени пользователя.
Чтобы послать сигнал:
kill PIDЕсли процесс принадлежит другому пользователю, используйте sudo:
sudo kill PIDБыстрее: pgrep и pkill
Инструменты pgrep и pkill упрощают задачу поиска и завершения по имени:
pgrep firefox— выводит PID(ы) процессов, имя которых содержит firefox.pkill firefox— посылает SIGTERM всем процессам, имя которых содержит firefox.
Чтобы послать SIGKILL через pkill:
pkill -9 firefoxkillall — точечное завершение по точному имени
killall завершит все процессы с точно совпадающим именем команды:
killall firefoxВ отличие от pkill, killall обычно требует точного совпадения имени процесса (зависит от реализации в вашей системе).
Пример пошагового сценария
- Найти PID:
pgrep -u $USER -l firefox- Мягко завершить:
kill PID- Если процесс не ответил — принудительно:
kill -9 PIDУправление системными сервисами
Системные службы (демоны) управляются иначе, чем пользовательские процессы. На современных дистрибутивах используется systemd:
- Остановить сервис:
sudo systemctl stop имя_сервиса.service- Перезапустить сервис:
sudo systemctl restart имя_сервиса.service- Посмотреть статус:
systemctl status имя_сервиса.serviceЕсли вы работаете на дистрибутиве без systemd (SysVinit, Upstart), команды будут отличаться.
Важно: перезапуск сервиса обычно безопаснее полного уничтожения связанных с ним процессов вручную.
Когда это не работает — примеры и причины
- Wayland вместо X: xkill может быть недоступен. Используйте возможности окружения рабочего стола (KDE/GNOME), расширения или инструментам разработчика.
- Процесс стал «зомби»: PID уже завершился, но запись осталась — её убирает родительский процесс или init.
- Процесс в состоянии uninterruptible sleep (обычно ожидает I/O) не отвечает на SIGKILL до завершения операции ядра.
- Процесс под другим пользователем без привилегий: нужен sudo или root.
Если процесс удерживает ресурсы ядра (например, аппаратный драйвер), единственным вариантом может быть перезагрузка.
Альтернативные подходы
- Перезапустить приложение через графическую оболочку, если GUI предоставляет «Перезапустить».
- Использовать инструменты отладки:
strace -p PIDпокажет, что делает процесс;lsof -p PIDпокажет открытые файлы/сокеты. - Если проблема повторяется, запустите приложение в терминале, чтобы видеть ошибки и логи.
Мини-методология: безопасное завершение процесса
- Определите процесс и его владельца (pgrep, ps, top).
- Сначала попытайтесь мягко завершить (
kill PID/pkill имя). - Проверьте логи приложения и systemd (journalctl).
- Если не завершился — используйте SIGKILL (
kill -9 PIDилиpkill -9). - Если это сервис — используйте systemctl stop/restart.
- Если причина I/O или драйвер — планируйте перезагрузку и диагностику оборудования.
Дерево принятия решения
flowchart TD
A[Зависло приложение?] --> B{Графический интерфейс?}
B -- Да --> C[xkill / System Monitor]
B -- Нет --> D[Терминал]
C --> E{Закрылось?}
D --> F[Найти PID: pgrep/ps/top]
E -- Да --> Z[Готово]
E -- Нет --> F
F --> G[Попытка SIGTERM: kill PID]
G --> H{Ответил?}
H -- Да --> Z
H -- Нет --> I[SIGKILL: kill -9 PID]
I --> J{Сервис?}
J -- Да --> K[systemctl stop/restart]
J -- Нет --> ZЧек-листы по ролям
Обычный пользователь (рабочий стол):
- Попробовать закрыть через GUI.
- Использовать System Monitor.
- Если не можете — выйти из сессии и снова войти.
Разработчик / тестировщик:
- Запустить приложение в терминале для получения вывода.
- Использовать strace/lsof для диагностики.
- Принудительно завершить и собрать логи для анализа.
Системный администратор:
- Проверить systemd и журналы (journalctl).
- Использовать pkill/killall с учётом безопасного порядка завершения.
- Планировать перезагрузку и уведомлять пользователей при необходимости.
Краткий справочник команд (шпаргалка)
ps aux— список процессов.top/htop— интерактивный просмотр процессов.pgrep— найти PID по имени.pkill— послать SIGTERM по имени.kill— послать SIGTERM процессу.kill -9— послать SIGKILL процессу.killall— завершить все процессы с именем.xkill— клик по окну для его завершения (X11).systemctl stop|restart— управление системными службами.
Критерии приёмки
- Приложение/процесс корректно завершён без влияния на другие важные службы.
- Логи зафиксировали причину зависания (по возможности).
- Если использовался SIGKILL, подтверждена необходимость принудительного завершения.
Безопасность и конфиденциальность
- Не завершайте процессы, если не уверены, что они не управляют критичными сервисами (базы данных, сетевые прокси и т. п.).
- Использование
sudoдаёт полномочия завершать процессы других пользователей — действуйте аккуратно.
Совместимость и миграция
- X11: xkill и многие традиционные инструменты работают без проблем.
- Wayland: некоторые инструменты X11 не работают; используйте возможности окружения (KDE/Plasma, GNOME) или обновлённые утилиты.
- systemd присутствует в большинстве современных дистрибутивов; на старых или специализированных — используйте альтернативные инструменты управления службами.
Когда стоит перезагрузить систему
Перезагрузка оправдана, если:
- Процесс блокирует ресурсы ядра (I/O) и не реагирует на SIGKILL.
- Наблюдаются утечки памяти или дефект драйвера.
- Несколько критичных сервисов повреждены и восстановить их последовательностью команд невозможно.
Шаблон шаблона — пошаговый план для инцидента
- Оповестить заинтересованных (если сервер/служба публичная).
- Снять текущие логи:
journalctl -u имя_сервиса -b. - Попытаться мягко перезапустить сервис:
systemctl restart. - Если не помогает — найти PID и попробовать SIGTERM, затем SIGKILL.
- Документировать время и причину завершения.
- При необходимости — плановая перезагрузка и последующая диагностика.
Резюме
- Для графики: сначала GUI-инструменты и xkill (в X11). Для Wayland — использовать средства окружения.
- В терминале: pgrep/pgrep → kill → kill -9 → killall/pkill для массовых действий.
- Для служб используйте systemctl. Всегда начинайте с мягкого завершения, прежде чем применять принудительное.
Важно: принудительное завершение может привести к потере данных; используйте его как последний инструмент.
Изображение: Lee on Flickr
| | Linux Commands | | Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc · tr | | | Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | | | Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld | |
Связанные материалы: лучшие ноутбуки с Linux для разработчиков и энтузиастов
Похожие материалы
Профессиональный профиль в Facebook: как оформить
Как найти первую федеральную вакансию
Amazon Music на Twitch: установка и инструкция
Как добавлять гиперссылки в Excel — подробный справочник
Как стать преподавателем программирования