yandex
Калькулятор ценТарифыАкцииДокументацияО насКарьера в Cloud.ruНовостиЮридические документыКонтактыРешенияРеферальная программаКейсыПартнерство с Cloud.ruБезопасностьEvolutionAdvancedEvolution StackОблако VMwareML SpaceВ чем отличия платформ?БлогОбучение и сертификацияМероприятияИсследования Cloud.ruЛичный кабинетВойтиЗарегистрироватьсяEvolution ComputeEvolution Managed KubernetesEvolution Object StorageEvolution Managed PostgreSQL®Облако для мобильных и веб‑приложенийАналитика данных в облакеEvolution Bare MetalEvolution SSH KeysEvolution ImageСайт в облакеEvolution DNSEvolution VPCEvolution Load BalancerEvolution Magic RouterEvolution DiskХранение данных в облакеEvolution Container AppsEvolution Artifact RegistryEvolution Managed ArenadataDBEvolution Managed TrinoEvolution Managed SparkАналитика данных в облакеEvolution ML InferenceEvolution Distributed TrainEvolution ML FinetuningEvolution NotebooksCurator Anti-DDoSCurator Anti‑DDoS+WAFUserGate: виртуальный NGFWStormWall: Anti-DDoSEvolution TagsEvolution Task HistoryCloud MonitoringCloud LoggingАренда GPUAdvanced Object Storage ServiceAdvanced Elastic Cloud ServerAdvanced Relational Database Service for PostgreSQLРазработка и тестирование в облакеAdvanced Image Management ServiceAdvanced Auto ScalingDirect ConnectCDNCross-platform connectionAdvanced Enterprise RouterAdvanced Cloud Backup and RecoveryAdvanced Data Warehouse ServiceAdvanced Elastic Volume ServiceAdvanced Cloud Container EngineAdvanced FunctionGraphAdvanced Container Guard ServiceAdvanced Software Repository for ContainerAdvanced Document Database Service with MongoDBAdvanced Relational Database Service for MySQLAdvanced Relational Database Service for SQL ServerCloud AdvisorAdvanced Server Migration ServiceAdvanced Data Replication ServiceAdvanced API GatewayAdvanced CodeArtsAdvanced Distributed Message Service for KafkaAdvanced Distributed Message Service for RabbitMQAdvanced DataArts InsightAdvanced CloudTableAdvanced MapReduce ServiceAdvanced Cloud Trace ServiceAdvanced Application Performance ManagementAdvanced Identity and Access ManagementAdvanced Enterprise Project Management ServiceVMware: виртуальный ЦОД с GPUVMware: виртуальный ЦОДУдаленные рабочие столы (VDI)VMware: сервер Bare MetalИнфраструктура для 1С в облакеУдаленные рабочие столыМиграция IT‑инфраструктуры в облако3D-моделирование и рендерингVMware: резервное копирование виртуальных машинVMware: резервный ЦОДVMware: резервное копирование в облакоVMware: миграция виртуальных машин
Поиск
Связаться с нами

Как убить зависший процесс в Linux: команды kill, pkill, killall для Ubuntu

Когда вы работаете в Linux, некоторые процессы могут зависнуть. Это замедляет работу, занимает нужную память и приводит к другим проблемам. В статье расскажем, как с помощью команд закрыть зависшие процессы и не затронуть ничего важного.

Инструкции
Иллюстрация для статьи на тему «Как убить зависший процесс в Linux: команды kill, pkill, killall для Ubuntu»
Продукты из этой статьи:
Иконка-Evolution Image
Evolution Image

Для тех, кто предпочитает работать в знакомом окружении, в облачной платформе Cloud.ru доступны предустановленные образы популярных дистрибутивов Linux, таких как Ubuntu и Debian. Это позволяет быстро развернуть виртуальную машину и сразу приступить к работе, не тратя время на базовую настройку операционной системы.

Каталог операционных систем и образов Evolution Image
Каталог операционных систем и образов Evolution Image
Управляйте пользовательскими образами и доступами к готовым образам с популярными дистрибутивами операционных систем
Подробнее
Дарим до 20 000 бонусов
Дарим до 20 000 бонусов
4 000 бонусов — физическим лицам, 20 000 бонусов — юридическим

Идентификация процесса и поиск PID

Перед завершением процесса надо понять, какой у него идентификатор, или PID. Тут вам пригодятся команды ps, top и htop.

Комнада ps покажет все запущенные процессы и даст по ним детальную информацию. А если отфильтруете через grep, то найдете конкретный процесс:

Команда top — утилита, которая отображает процессы в реальном времени, отсортировывает их по потреблению ресурсов и обновляет информацию каждые несколько секунд. Процессы, которые больше всего нагружают процессор, по умолчанию находятся сверху.

Первые пять строк — общая информация о системе: время работы, количество пользователей, загрузка системы (load average), общее количество процессов и их состояние (running, sleeping, stopped, zombie). Источник: learn.microsoft.com.Первые пять строк — общая информация о системе: время работы, количество пользователей, загрузка системы (load average), общее количество процессов и их состояние (running, sleeping, stopped, zombie). Источник: learn.microsoft.com.

Что чем является в выводе:

  • PID — идентификатор процесса, который понадобится, чтобы завершить процесс;

  • USER — владелец процесса;

  • %CPU — процент использования процессора;

  • %MEM — использование памяти;

  • COMMAND — имя процесса или команды.

Команда htop — улучшенная версия top с цветным интерфейсом и удобной навигацией. Позволяет быстрее находить проблемные процессы.

Как дополнение к этим командам для поиска PID можете использовать:

После определения PID можете переходить к завершению процесса с помощью kill или killall. С pkill можно не искать PID, а просто указать имя процесса — система найдет все подходящие процессы и завершит их. О каждой из команд поговорим дальше.

Использование команды kill

Команду kill используют, чтобы отправлять процессам в Linux сигналы. Помните, что по умолчанию kill не убивает процессы, а отправляет им команду на корректное завершение.

Основные сигналы с их наименованиями и номерами в скобках:

  • SIGTERM (15) — корректное завершение, по умолчанию.

  • SIGKILL (9) — принудительное завершение.

  • SIGHUP (1) — перезагрузка конфигурации.

  • SIGSTOP (19) — приостановка процесса.

Сначала попытайтесь завершить процесс корректно. Для этого введите саму команду kill и PID, который нашли ранее:

Если процесс все же не отвечает, завершите его принудительно:

Чтобы посмотреть все доступные сигналы, введите kill -l.

Использование команды pkill

Команда pkill упрощает завершение процессов — вам не нужно искать PID, чтобы отправить сигнал. Вы просто указываете имя процесса, а pkill сам найдет и завершит все подходящие процессы.

У pkill есть сигналы — так же, как и у «простого» kill. Посмотреть все сигналы вы можете командой kill -l.

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

Перед тем, как завершать процессы по шаблонам, стоит проверить, какие из них будут затронуты. Для этого выполните pgrep -l "шаблон". Рассмотрим на примере шаблона chrome:

У pkill есть полезные флаги, которые меняют поведение команды. Примеры таких флагов: -i, -v и -u:

Использование команды killall

Команда killall завершает все процессы с указанным именем — это ее основное отличие от kill, который работает с конкретными PID. Команда killall особенно полезна, когда приложение создает несколько процессов и нужно быстро освободить ресурсы системы.

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

  • Нужно завершить все процессы с одинаковым именем.

  • Работаете с приложениями, которые запускают несколько процессов.

  • Хотите быстро очистить систему от всех копий программы.

Если сравнивать killall с pkill, то killall ищет и завершает процессы, если указать их точное имя. А pkill может использовать шаблоны и завершать все процессы, в которых есть какое-то слово, которые вы введете в шаблоне:

Примеры использования полезных флагов:

Проверка завершения процесса

После завершения процесса важно убедиться, что он действительно перестал работать. Рассказываем, как это проверить.

Через команду ps:

Если процесс завершен, вывод будет пустым. А если процесс еще работает, вы увидите его статус.

Иногда процесс может остаться в состоянии «зомби» (zombie). Тогда он будет отображаться в ps, но по факту не будет работать. В таком случае обычно нужно завершить родительский процесс.

Через команду pgrep:

Если процессы найдены, в выводе будут показаны их PID. В случае, если вывод пустой, все завершено.

Через команду /proc:

В выводе смотрите, показана ли директория. Если ее нет, значит, процесс завершен.

Подробности о завершении процессов

Вместе со специальными командами вы можете использовать сигналы — так вы настроите способ, с помощью которого система завершить нужный процесс. А еще важно проверить права, потому что некоторые процессы может закрыть только root-пользователь.

Отправка сигналов

Сигналы — это способы, с помощью которых вы можете взаимодействовать с процессами в Linux. Вот основные сигналы с их наименованиями и номерами:

Чтобы посмотреть все доступные сигналы, выполните: kill -l.

Права доступа

Чтобы завершать разные по значимости для работы системы процессы, нужны разные права. Например, обычный пользователь может завершить только свои процессы. Пользователь root может убить любые процессы в системе. А что-то защищено даже от root, к примеру, процессы в состоянии D (uninterruptible sleep).

Если пытаетесь завершить процесс и видите сообщение: «Operation not permitted» — значит, для этого действия вам нужны root-права.

Заключение

Подведем итоги и дадим несколько советов, которые помогут безопасно работать с зависшими процессами:

  • Перед тем, как что-то закрывать, сохраняйте важные данные — допустим, если закрываете процесс в текстовом редакторе или другом приложении.

  • При использовании команд pkill и killall следите за тем, чтобы правильно указать имя процесса. Если ошибиться даже в одной букве, есть риск, что снесется что-нибудь системное.

  • Если не знаете, за что отвечает конкретное системное приложение, его лучше не трогать.

  • Вначале старайтесь завершить процесс корректно: через kill -15 PID или kill -TERM PID.

  • Принудительное завершение используйте только тогда, когда процесс не реагирует на корректное.

Продукты из этой статьи:
Иконка-Evolution Image
Evolution Image
24 октября 2025

Вам может понравиться