Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
udevd: worker [PID] terminated by signal 9 (KILL) Linux / DevOps

udevd: worker terminated by signal 9 — Зависание воркеров udev в Linux

Обновлено: 18.08.2026  ·  Официальная база знаний

Архитектура ошибки и симптомы сбоя

Сообщение «udevd: worker [PID] terminated by signal 9 (KILL)» (сопровождающееся «worker [PID] timeout, will be killed») генерируется управляющим демоном устройств systemd-udevd. Ошибка означает, что дочерний процесс-воркер (udev worker), обрабатывающий аппаратное событие (подключение диска, смена сетевого интерфейса, опрос multipath или SAS контроллера), превысил допустимый лимит времени обработки события (по умолчанию event_timeout = 180s). Главный демон udev принудительно убивает зависший процесс сигналом SIGKILL (kill -9).

Диагностическая таблица параметров сбоя

ПараметрЗначениеИнженерный смысл сбоя
systemd-udevdDevice Event DaemonСлужба динамического управления узлами устройств в /dev и назначения прав.
event_timeout180 sec (Default)Максимальное время на исполнение скриптов правил (RUN+=...) для одного uevent.
Signal 9 (SIGKILL)Forced TerminationАварийное уничтожение зависшего воркера для предотвращения паралича udev.

Пошаговое дерево решений и сценарии траблшутинга

Сценарий 1: Просмотр очереди зависших событий udev в реальном времени

# Просмотр текущей очереди событий udev:
sudo udevadm queue

# Мониторинг входящих аппаратных событий (uevent):
sudo udevadm monitor --property

Сценарий 2: Локализация зависшего скрипта в правилах udev

Запустите тестовую симуляцию обработки события для проблемного блочного устройства:

# Тестовый прогон udev rules для диска sda с подробным дебагом:
sudo udevadm test --action="add" /sys/block/sda

# Поиск тяжелых внешних вызовов (директивы RUN+=, IMPORT{program}=) в каталогах:
# /etc/udev/rules.d/ и /lib/udev/rules.d/
grep -rn "RUN+=" /etc/udev/rules.d/

Сценарий 3: Увеличение таймаута event_timeout в конфигурации udev

Если сервер опрашивает медленные ленточные библиотеки, SAN/Multipath или сетевые хранилища:

# Отредактируйте конфигурационный файл /etc/udev/udev.conf:
cat <<EOF | sudo tee -a /etc/udev/udev.conf
event_timeout=300
timeout_signal=SIGABRT
EOF

# Перезапустите службу udev:
sudo systemctl restart systemd-udevd

Сценарий 4: Отключение зависших helper-утилит (blkid / multipathd / mdadm)

Часто воркер udev зависает на чтении поврежденных суперблоков дисков утилитой blkid:

# Проверьте зависшие процессы в D-state:
ps aux | grep -E "(blkid|multipath|udev)"
Сервер зависает на этапе загрузки или долго определяет дисковые корзины?
ITSTM выполнит аудит конфигурации multipath, оптимизацию очередей SAN Fibre Channel и стабилизацию инициализации udev.
Практический опыт инженера: При использовании Fibre Channel SAN с тысячами LUN всегда настраивайте параметры multipath find_multipaths yes и отключайте сканирование чужих блочных устройств в /etc/lvm/lvm.conf через глобальные фильтры (global_filter), чтобы воркеры udev не висли на вызовах blkid.

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

Почему категорически не рекомендуется выполнять долгие скрипты через udev RUN+=?

Воркеры udev предназначены исключительно для быстрых кратковременных задач назначения прав и символических ссылок. Длительные скрипты (бэкапы, монтирование, сетевые запросы) блокируют очередь udev и гарантированно убиваются по таймауту 180s. Для долгих задач используйте запуск systemd-юнитов через ENV{SYSTEMD_WANTS}+=.

Что происходит с устройством, если воркер udev был убит по Signal 9?

Устройство остается в системе в полуинициализированном состоянии: для него могут отсутствовать симлинки в /dev/disk/by-uuid/, могут не примениться права доступа или не создаться сетевые алиасы (predictable network names).

Как включить максимальный уровень логирования udev для отладки?

Выполните команду: sudo udevadm control --log-priority=debug. Логи начнут подробно записываться в journalctl -u systemd-udevd.

Как перезапустить зависшие воркеры udev без перезагрузки сервера?

Выполните: sudo systemctl restart systemd-udevd && sudo udevadm trigger.