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

Как завершить приложение или процесс в Linux

8 min read Linux Обновлено 25 Dec 2025
Завершить процесс в Linux: GUI и терминал
Завершить процесс в Linux: GUI и терминал

Краткое введение

Windows имеет Ctrl+Alt+Delete, macOS — Command+Option+Escape; у Linux свои инструменты для принудительного завершения зависших графических приложений и фоновых процессов. Конкретные графические утилиты зависят от рабочего окружения (GNOME, KDE, Xfce и т. п.), но базовые подходы похожи.

Важно: «убить» процесс — это термины из UNIX-среды: завершение процесса может привести к потере несохранённых данных. Прежде чем принудительно завершать процесс, попытайтесь сохранить данные обычными средствами.

Как завершить приложение в графическом интерфейсе

Современные рабочие столы часто умеют автоматически распознавать неотвечающие окна. Обычное поведение:

  • Окно затемняется или помечается как «не отвечает».
  • Нажатие кнопки закрытия может вызвать диалог с вариантами: «Подождать» или «Завершить». Если окно отрисовывает собственный заголовок, менеджер окон может не увидеть зависание.

Как завершить приложение или фоновой процесс на Linux

Быстро: xkill

Если нужен быстрый способ заставить графическое окно исчезнуть, используйте утилиту xkill.

  • В некоторых окружениях комбинация Ctrl+Alt+Esc активирует xkill.
  • Можно открыть «Выполнить команду» (обычно Alt+F2) и ввести xkill.
  • Либо откройте терминал и выполните:
xkill

Курсор изменится на крестик. Кликните по окну, и утилита определит связанный с окном процесс и завершит его сразу. Окно мгновенно исчезнет.

Утилита xkill: курсор-стрелка меняется на крест

Примечание: xkill работает в X-сессиях. В Wayland‑сессиях (новые версии GNOME, KDE) xkill может не работать; используйте средства окружения рабочего стола.

Системный монитор рабочего стола

У большинства окружений есть графический «Диспетчер задач»/«Системный монитор». Например, в GNOME и производных откройте System Monitor, чтобы увидеть список процессов и завершить любой из них.

Системный монитор показывает процессы и использованную память

Шаги:

  1. Откройте System Monitor или аналогичный инструмент (KSysGuard, XFCE Task Manager и т. п.).
  2. Найдите зависшее приложение в списке.
  3. Выберите процесс и нажмите «Завершить процесс» или «Принудительно завершить».

Если окно не отображается в списке окон, оно всё ещё может существовать как фоновый процесс — System Monitor покажет и фоновые процессы.

Пример списка процессов в 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 firefox

killall — точечное завершение по точному имени

killall завершит все процессы с точно совпадающим именем команды:

killall firefox

В отличие от pkill, killall обычно требует точного совпадения имени процесса (зависит от реализации в вашей системе).

Пример пошагового сценария

  1. Найти PID:
pgrep -u $USER -l firefox
  1. Мягко завершить:
kill PID
  1. Если процесс не ответил — принудительно:
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 покажет открытые файлы/сокеты.
  • Если проблема повторяется, запустите приложение в терминале, чтобы видеть ошибки и логи.

Мини-методология: безопасное завершение процесса

  1. Определите процесс и его владельца (pgrep, ps, top).
  2. Сначала попытайтесь мягко завершить (kill PID / pkill имя).
  3. Проверьте логи приложения и systemd (journalctl).
  4. Если не завершился — используйте SIGKILL (kill -9 PID или pkill -9).
  5. Если это сервис — используйте systemctl stop/restart.
  6. Если причина 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.
  • Наблюдаются утечки памяти или дефект драйвера.
  • Несколько критичных сервисов повреждены и восстановить их последовательностью команд невозможно.

Шаблон шаблона — пошаговый план для инцидента

  1. Оповестить заинтересованных (если сервер/служба публичная).
  2. Снять текущие логи: journalctl -u имя_сервиса -b.
  3. Попытаться мягко перезапустить сервис: systemctl restart.
  4. Если не помогает — найти PID и попробовать SIGTERM, затем SIGKILL.
  5. Документировать время и причину завершения.
  6. При необходимости — плановая перезагрузка и последующая диагностика.

Резюме

  • Для графики: сначала 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 для разработчиков и энтузиастов

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

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

Профессиональный профиль в Facebook: как оформить
Социальные сети

Профессиональный профиль в Facebook: как оформить

Как найти первую федеральную вакансию
Карьера

Как найти первую федеральную вакансию

Amazon Music на Twitch: установка и инструкция
Streaming

Amazon Music на Twitch: установка и инструкция

Как добавлять гиперссылки в Excel — подробный справочник
Productivity

Как добавлять гиперссылки в Excel — подробный справочник

Как стать преподавателем программирования
Образование

Как стать преподавателем программирования

vCard в Mail на Mac — отправка и приём
macOS

vCard в Mail на Mac — отправка и приём