Как исправить длительное время выключения сервера в Linux

Giteqa

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

Надеюсь, вы немного знакомы с концепцией sigterm и sigkill.

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

Это может вызвать задержку процесса завершения работы, поскольку ваша система будет ждать остановки запущенных процессов в течение заранее определенного периода времени. По истечении этого периода времени он отправляет сигнал уничтожения, чтобы принудительно остановить все оставшиеся запущенные процессы, и завершает работу системы. Я рекомендую прочитать о sigterm vs sigkill, чтобы понять разницу.

Фактически, в некоторых случаях вы можете увидеть сообщение типа «выполняется остановка задания» на черном экране.

Если ваша система слишком долго выключается, вы можете сделать следующее:

Проверьте, какой процесс / служба занимает слишком много времени, и можете ли вы удалить или перенастроить их для правильной работы.
Измените период ожидания по умолчанию, прежде чем ваша система принудительно остановит запущенные процессы. [Быстрое и грязное исправление]
Здесь я использую Ubuntu, который использует systemd. Приведенные здесь команды и шаги действительны для любого дистрибутива Linux, который использует systemd (большинство из них это делает).

Устранение неполадок при длительном выключении Linux

Проверьте, какие процессы вызывают долгое завершение работы в Linux
Если вы хотите выяснить, что случилось, вам следует проверить, что произошло при последнем выключении. Используйте эту команду, чтобы получить больше информаций:

journalctl -rb -1
Команда journalctl позволяет читать системные журналы. С помощью параметров «-b -1» вы фильтруете журналы для последнего сеанса загрузки. При выборе опции «-r» журналы отображаются в обратном хронологическом порядке.

Другими словами, команда journalctl -rb -1 покажет системные журналы непосредственно перед тем, как ваша система Linux была выключена в последний раз. Это то, что вам нужно для анализа проблемы длительного отключения в Linux.

Нет журналов? Вот что тебе следует делать

Вы нашли что-нибудь подозрительное в логах? Есть ли процесс / сервис, который отказывается останавливаться? Если да, выясните, можно ли удалить его без побочных эффектов или перенастроить. Пожалуйста, не удаляйте вещи вслепую. Вы должны знать этот процесс.

Ускорьте завершение работы в Linux за счет сокращения тайм-аута остановки по умолчанию [Quick fix]
Период ожидания по умолчанию для завершения работы обычно составляет 90 секунд. Ваша система пытается принудительно остановить службы по истечении этого периода времени.

Если вы хотите, чтобы ваша система Linux быстро завершала работу, вы можете изменить этот период ожидания.

Вы найдете все настройки systemd в файле конфигурации, расположенном в /etc/systemd/system.conf. Этот файл должен быть заполнен большим количеством строк, начинающихся с #. Они представляют собой значения по умолчанию для записей в файле.

Прежде чем что-либо делать, будет неплохо сделать копию исходного файла.

sudo nano /etc/systemd/system.conf /etc/systemd/system.conf.orig
Найдите здесь DefaultTimeoutStopSec. Вероятно, его следует установить на 90 секунд.

# DefaultTimeoutStopSec = 90 с
Вы должны изменить это значение на более удобное, например, 5 или 10 секунд.

DefaultTimeoutStopSec = 5 с.
Изменить настройки времени выключения Ubuntu

Не забудьте удалить # перед DefaultTimeoutStopSec. Сохраните файл и перезагрузите вашу систему.

Это должно помочь вам уменьшить задержку завершения работы вашей системы Linux.

Как долго загружается ваша система Linux?

Узнать можно с помощью команды systemd-analysis.

Удалось ли исправить длительное отключение?

Я надеюсь, что это руководство помогло вам исследовать и исправить проблему длительного выключения в вашей системе. Дайте мне знать в комментариях, если вам удалось это исправить.