Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

KILL_9_STUCK_PROCESS Linux / DevOps

Завис терминал Linux (SSH): как найти и принудительно убить процесс по PID

Обновлено: 27.08.2026 · Официальная документация ↗

Симптомы зависшего процесса

Вы запустили программу в терминале SSH, нажатие Ctrl + C или Ctrl + Z не помогает, консоль не реагирует на ввод команд, либо процесс продолжает невидимо работать в фоне, потребляя 100% ресурсов.

Способы принудительного завершения процессов

1. Находим номер PID зависшего процесса

Откройте вторую сессию терминала SSH и выполните поиск:

ps aux | grep имя_программы

Второй столбец слева — это числовой идентификатор PID (например, 25410).

2. Мягкое завершение (SIGTERM / сигнал 15)

sudo kill 25410

Дает программе возможность корректно сохранить данные и закрыть файлы.

3. Безусловное уничтожение ядра (SIGKILL / сигнал 9)

Если процесс не закрылся через 5 секунд, применяем команду принудительного уничтожения:

sudo kill -9 25410

4. Быстрое убийство по имени (pkill / killall)

Чтобы не искать PID вручную, завершите все процессы с таким именем:

# Мягко:
sudo pkill python3

# Принудительно (kill -9):
sudo pkill -9 -f my_script.py

Как закрыть намертво зависшую сессию SSH клиента: Нажмите последовательно комбинацию: Enter → символ тильды ~ → точку . (SSH клиент немедленно разорвет зависшее соединение).

💡 Практика специалистов: Никогда не начинайте сразу с kill -9 для баз данных (MySQL, PostgreSQL). Всегда сначала отправляйте стандартный kill (SIGTERM), чтобы база успела сбросить транзакции из памяти на диск.

Частые вопросы (FAQ)

Почему процесс со статусом D (Uninterruptible Sleep) не убивается даже kill -9?

Процесс в состоянии D ожидает ответа от диска или сетевой файловой системы (NFS). Пока аппаратный контроллер не вернет ответ ядра, процесс убить невозможно без перезагрузки сервера.

Чем отличается pkill от killall?

Killall ищет точное совпадение имени исполняемого файла, а pkill умеет искать по шаблону регулярного выражения и аргументам командной строки (флаг -f).

Как убить все процессы определенного пользователя?

Выполните команду sudo pkill -u имя_пользователя.

Что означает сигнал SIGHUP (kill -1)?

Сигнал HUP сообщает процессу о необходимости перечитать свои файлы конфигурации без полной остановки работы.

Полезные материалы
Рекомендуем