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

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

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

Linux / DevOps

Как найти и убить зависший процесс в Linux: утилита top и команда kill

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

Что делать, если сервер Linux завис и тормозит

Когда сервер начинает отвечать с огромными задержками, сайты открываются медленно, а вентиляторы процессора гудят на полную мощность — скорее всего, один из процессов завис в бесконечном цикле (Loop), устроил утечку оперативной памяти (Memory Leak) или заблокировал диск. В Linux нет привычного окна «Диспетчера задач» с кнопкой «Снять задачу», но есть мощный консольный монитор top и команды управления сигналами ядра kill.

Таблица сигналов завершения процессов

СигналНомерДействиеКогда применять
SIGTERM15Мягкая просьба завершить работу, сохранив данные.Стандартный метод: Безопасное выключение программы.
SIGKILL9Принудительное жесткое уничтожение процесса ядром.Экстренный метод: Зависшая намертво программа, не реагирующая на команды.

Пошаговый поиск и уничтожение проблемного процесса

Шаг 1: Запуск интерактивного диспетчера задач (top)

Введите команду:

top

Вы увидите обновляемую таблицу процессов. Главные колонки:

  • PID — уникальный цифровой идентификатор процесса (нужен для его закрытия).
  • %CPU — процент нагрузки на процессор. Нажмите на клавиатуре заглавную букву P (Shift + P), чтобы отсортировать список по пожирателям CPU.
  • %MEM — процент занятой оперативной памяти. Нажмите M (Shift + M), чтобы отсортировать по утечкам памяти.
  • COMMAND — имя исполняемой программы (например, php-fpm, python, mysqld).

Для выхода из top нажмите клавишу q.

Шаг 2: Быстрый поиск PID зависшей программы (pgrep / ps)

Если вы знаете имя зависшего скрипта (например, backup.py), найдите его PID напрямую:

pgrep -l backup.py
 или через фильтр всех процессов:
ps aux | grep backup.py

Шаг 3: Мягкое завершение процесса (kill PID)

Отправьте процессу сигнал на корректное закрытие (замените 1234 на ваш реальный PID):

kill 1234

Шаг 4: Принудительное уничтожение процесса (kill -9)

Если программа зависла наглухо и игнорирует команду, уничтожьте ее принудительно сигналом SIGKILL (9):

sudo kill -9 1234

 Или убить все процессы с одинаковым именем сразу:
sudo killall -9 php-fpm

Типовые ошибки администраторов

  • Стрельба из пушки (kill -9 на базу данных): Принудительное убийство процесса mysqld или postgres через флаг -9 может повредить таблицы базы данных и транзакционные логи InnoDB, приведя к долгому аварийному восстановлению (Crash Recovery). Всегда сначала пробуйте обычный kill (SIGTERM).
  • Случайное убийство системных процессов: Никогда не пытайтесь завершить процесс с PID 1 (systemd / init) — это вызовет мгновенную панику ядра (Kernel Panic) и перезагрузку сервера.
Сервер регулярно зависает из-за утечек памяти или бесконечных процессов?
Инженеры ITSTM настроят мониторинг производительности в Grafana, оптимизируют пулы PHP-FPM/NodeJS и внедрят демоны автоматического перезапуска (Monit / Systemd Watchdog).
💡 Практика специалистов: Если на сервере часто срабатывает OOM Killer (Out of Memory Killer), внезапно убивая базы данных, настройте лимиты потребления ресурсов через Systemd Cgroups (параметры MemoryMax и CPUQuota в unit-файлах), а также добавьте правильный файл подкачки (Swap).

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

Чем утилита htop лучше стандартного top?

htop — это продвинутая версия top с цветным графическим интерфейсом, поддержкой мыши, удобным поиском по клавише F3 и возможностью убить процесс прямо из меню нажатием клавиши F9.

Что такое процессы-зомби (Zombie / Defunct) в top и как их убить?

Зомби — это завершившийся дочерний процесс, чей родитель не прочитал его статус выхода. Зомби не потребляет память или CPU. Убить зомби напрямую сигналом kill нельзя — нужно перезапустить его родительский процесс.

Что означает статус процесса 'D' (Uninterruptible Sleep)?

Статус 'D' означает, что процесс завис в ожидании ответа от дисковой подсистемы (I/O). Такой процесс невозможно убить даже через kill -9, пока не ответит зависший диск или сетевая шара NFS.

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

Используйте команду pkill с указанием имени пользователя: sudo pkill -u username -9

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