Как справиться с “Запущена остановка работы” в Debian 9 для 90 секунд, один раз каждые 2 или 3 завершения?

Вопрос или проблема

Когда я выключаю свой Debian Stretch (9), скорее всего, я вижу что-то вроде:

скриншот, показывающий "Работа завершения задания для ... пользователя Debian-gdm (59с / 1мин 30с)"

У меня есть несколько вопросов:

1) Кажется, это ошибка, которая еще не была решена (она существует уже несколько лет). Под “ошибкой” я имею в виду, что Linux должен выключаться быстрее, чем Windows; если это не так, то это ошибка.

2) Поскольку эту ошибку, похоже, трудно изолировать и решить, возможно, “Esc для отмены” решит большую часть проблемы.

3) У меня есть опыт программирования, но не с ядром Linux и подобным. Рекомендуется ли мне попробовать вставить “Esc для отмены” самостоятельно? Если да, то какой файл мне следует изменить? Могу ли я скомпилировать только этот файл или что-то большее?

ИЗМЕНЕНИЕ

Содержимое /etc/gdm3/daemon.conf

# Хранилище конфигурации GDM
#
# См. /usr/share/gdm/gdm.schemas для списка доступных опций.

[daemon]
# Уберите комментарий на строке ниже, чтобы заставить экран входа использовать Xorg
#WaylandEnable=false

# Включение автоматического входа
#  AutomaticLoginEnable = true
#  AutomaticLogin = user1

# Включение временного входа
#  TimedLoginEnable = true
#  TimedLogin = user1
#  TimedLoginDelay = 10

[security]

[xdmcp]

[chooser]

[debug]
# Уберите комментарий на строке ниже, чтобы включить отладку
# Более подробные логи
# Кроме того, позволяет X-серверу завершить работу, если он зависнет
#Enable=true

Настоящее решение заключается в том, чтобы выяснить, какой процесс все еще работает и почему. Проще сказать, чем сделать! В моей системе выполнялась (и никогда не завершалась) задача “fsck” на внешнем диске объемом 2 ТБ, подключенном по USB 2.0, который имел повреждение файловой системы из-за плохих секторов. Неудивительно, что она не могла завершиться! К счастью, единственные данные, к которым я не мог получить доступ, были в папке, которая мне не была нужна. После того как я скопировал все остальные данные, я отформатировал этот диск, этот симптом исчез, и мои отключения снова стали быстрыми.

На самом деле это не ошибка, Linux просто проявляет терпение, ожидая до 1 минуты 30 секунд, пока программа не завершится.

Проверьте, не выполняли ли вы какой-либо процесс в фоновом режиме, который игнорирует SIGTERM. Скорее всего, вы запустили его сами или каким-то образом запланировали. (Эта проблема не должна возникать на только что установленных дистрибутивах.)

Чтобы исправить ситуацию, найдите способ запустить процесс как системную службу, которая поддерживает действие запуска/остановки.

Ответ или решение

Чтобы решить проблему с сообщением "A stop job is running" при выключении Debian 9 (Stretch), необходимо уделить внимание нескольким аспектам, так как это не совсем "баг", а скорее нормальное поведение системы для обеспечения корректного завершения запущенных процессов. В данном ответе мы обсудим возможные причины, решения и рекомендации.

1. Определение источника проблемы

Как упоминалось в вопросе, важно выяснить, какие процессы тормозят завершение работы системы. Для этого можно выполнить следующие шаги:

  • Просмотр запущенных процессов: В командной строке используйте команду ps aux, чтобы увидеть, какие процессы работают в текущий момент. Обратите внимание на процессы, которые могут блокировать завершение системы.

  • Логи системы: Просмотрите файлы журналов, находящиеся по пути /var/log/syslog или journalctl, чтобы обнаружить возможные ошибки и узнать, какие именно процессы вызывают задержку.

2. Закрытие процессов, блокирующих завершение работы

Если вы обнаружили, что какой-то процесс (например, fsck для внешнего диска или другие пользовательские приложения) тормозит отключение, попробуйте следующие действия:

  • Завершение процесса вручную: Используйте команду kill или killall, чтобы принудительно завершить проблемные процессы. Для этого удобно использовать pkill <имя_процесса>.

  • Настройка системного сервиса: Если возможно, переведите приложения, которые запускаются при загрузке в фоновый режим, в службу systemd. Это позволит легко управлять их запуском и остановкой.

3. Увеличение времени ожидания

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

sudo systemctl edit <имя_сервиса>

Затем добавьте следующее:

[Service]
TimeoutStopSec=120

4. Задание Esc для отмены ожидания

Идея о том, чтобы добавить возможность отмены длительных ожиданий с помощью нажатия клавиши Esc — интересная. Однако, такие изменения требуют знаний о работе системных служб и могут затронуть код ядра, что не рекомендуется для новичков. Вместо этого, рекомендую сосредоточиться на устранении источника проблемы, так как это приведет к более устойчивому решению.

5. Итоговые рекомендации

  • Проверьте наличие фоновых задач: Убедитесь, что никакие фоновые задачи, которые могли бы не прерываться должным образом, не мешают завершению системы.

  • Очищайте внешние устройства: Если у вас есть внешние устройства, отключите их перед выключением, чтобы избежать зависания.

  • Регулярно обновляйте систему: Следите за обновлениями вашего Debian, так как проблемы подобного рода могут быть исправлены в новых версиях.

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

Оцените материал
Добавить комментарий

Капча загружается...