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

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

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
A stop job is running for Session of user (90s / 1min 30s) Linux / DevOps

A stop job is running for Session — Решение зависания перезагрузки Linux

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

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

Сообщение «A stop job is running for Session X of user Y (1min 30s / no limit)» появляется при выключении или перезагрузке ОС (reboot / poweroff). Ошибка означает, что systemd-logind отправил сигнал SIGTERM процессам пользовательской сессии (фоновые демоны tmux, screen, gpg-agent, зависшие SSH-сессии, процессы браузеров), но процессы проигнорировали сигнал и не завершились. Диспетчер systemd блокирует выключение сервера, ожидая истечения глобального таймаута (по умолчанию 90 секунд) перед отправкой SIGKILL.

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

ПараметрЗначениеИнженерный смысл сбоя
DefaultTimeoutStopSec90s (Default)Глобальное время ожидания завершения служб и сессий перед принудительным SIGKILL.
systemd-logindSession ManagerМенеджер управления жизненным циклом пользовательских сессий и cgroups.
KillUserProcessesyes / noПолитика завершения всех фоновых процессов пользователя при закрытии сессии.

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

Сценарий 1: Сокращение глобального таймаута остановки до 10 секунд

Уменьшите максимальное время ожидания зависших процессов в /etc/systemd/system.conf:

# Отредактируйте общесистемную конфигурацию systemd:
sudo sed -i 's/#DefaultTimeoutStopSec=90s/DefaultTimeoutStopSec=10s/' /etc/systemd/system.conf
sudo sed -i 's/#DefaultTimeoutAbortSec=90s/DefaultTimeoutAbortSec=10s/' /etc/systemd/system.conf

# Примените изменения без перезагрузки:
sudo systemctl daemon-reexec

Сценарий 2: Принудительное завершение процессов пользователя в logind.conf

# Настройка автоматического закрытия всех процессов при логауте:
sudo sed -i 's/#KillUserProcesses=no/KillUserProcesses=yes/' /etc/systemd/logind.conf

# Перезапуск службы logind:
sudo systemctl restart systemd-logind

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

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

# Просмотр дерева процессов конкретной пользовательской сессии:
loginctl list-sessions
loginctl session-status <SESSION_ID>

# Просмотр запущенных сервисов пользователя:
systemctl --user list-units --type=service --state=running

Сценарий 4: Экстренная мгновенная перезагрузка сервера через Magic SysRq

Если сервер намертво завис на этапе Stop Job прямо сейчас:

# Принудительный мгновенный сброс буферов и перезагрузка ядра:
echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger
Сервера баз данных или гипервизоры зависают при плановой перезагрузке?
ITSTM настроит корректные цепочки graceful shutdown для сложных сервисов и исключит многоминутные простои оборудования.
Практический опыт инженера: Для серверов виртуализации и CI/CD раннеров выставляйте DefaultTimeoutStopSec=10s в /etc/systemd/system.conf и user.conf. Это сокращает время цикла планового ребута серверов с 2 минут до 15 секунд.

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

Почему systemd ждет именно 90 секунд?

Значение 90 секунд заложено разработчиками systemd как безопасный интервал по умолчанию, чтобы базы данных (MySQL, PostgreSQL) успели корректно сбросить буферы транзакций на диск без повреждения данных.

Завершит ли KillUserProcesses=yes сессии tmux и screen?

Да. Если KillUserProcesses включен, systemd уничтожит все запущенные пользователем программы при выходе из SSH. Чтобы оставить фоновый процесс, используйте команду systemd-run --user --scope tmux.

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

В секции [Service] unit-файла добавьте директиву TimeoutStopSec=15s.

Что означает статус stop-sigterm в выводе systemd?

Он означает, что systemd уже отправил процессу запрос на мягкое завершение (SIGTERM) и в данный момент ожидает его выхода по таймеру TimeoutStopSec.