Ubuntu зависает при выключении

Сразу после установки, как правило, любая операционная система будет работать очень хорошо и быстро. Но со временем ошибки могут накапливаться и вызывать различные проблемы с использованием ОС.

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

Почему не выключается компьютер Linux?

Инициализацией и завершением работы сервисов в системе Linux занимается system, и если компьютер не может выключиться, это означает, что systemd не может справиться с каким-либо процессом и ждёт его завершения. По умолчанию система даёт каждому сервису одну минуту и тридцать секунд, а затем отправляет сигнал экстренного завершения. Но таких сервисов может быть несколько, и завершение работы Linux может затянуться.

Есть несколько путей решения этой проблемы:

  • Во первых, нам необходимо понять в чём именно проблема, какой сервис её вызывает и попытаться её решить;
  • Во вторых, мы можем уменьшить время ожидания от 90 до пяти секунд, для большинства сервисов этого будет вполне достаточно.

А теперь давайте рассмотрим пути решения проблемы.

Как исправить ошибку "не выключается Linux"

Чтобы понять, почему система не может выключиться, нам сначала необходимо посмотреть лог её выключения. И тут у нас тоже есть два пути: либо отключить заставку и выводить лог в реальном времени, либо записывать лог выключения с помощью journalctl.

1. Лог выключения в реальном времени

Первый способ не настолько информативный, но всё же может быть полезным. Для отключения заставки откройте /etc/default/grub и в строке GRUB_CMDLINE_LINUX_DEFAULT замените слова quiet splash на verbose:

Затем перезагрузите компьютер. Сначала вы будете видеть полный лог загрузки, а при выключении вы увидите полный лог выключения. Преимущество этого пути в том, что вы увидите, на какой команде загрузка зависает, и сможете понять, куда копать дальше. Например, часто бывает, что Linux не может выключиться из-за ошибки "a stop job is running for Session c2 of user", т.е. мы не можем завершить сессию пользователя. Ещё выключению могут препятствовать примонтированные удалённые файловые системы.

Читайте также:  Fallout 76 можно играть одному

2. Лог выключения в journalctl

Утилита journalctl занимается обработкой логов в Linux, но есть одна проблема: она записывает журналы только из текущей сессии, при перезагрузке всё стирается. Но это можно исправить. Для этого окройте конфигурационный файл /etc/systemd/journald.conf и замените в нём значение строки Storage=auto на Storage=persistent:

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

sudo journalctl -b -1 -n300

Опция –b позволяет вывести лог загрузки, -1 говорит, что нужно брать не текущую загрузку, а предыдущую, а –n300 отображает только последние 300 строк. Здесь вы можете видеть, что по таймауту была завершена именно сессия session-c1. Мы можем отфильтровать сообщения только по ней:

sudo journalctl -b -1 -u session-c1.scope

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

3. Настройка таймаутов в systemd

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

sudo vi /etc/systemd/system.conf

Теперь система будет ждать только 5 секунд перед тем, как завершить проблемный процесс. Также на некоторых форумах рекомендуют установить сервис watchdog, чтобы он следил за правильностью работы системного таймера. Это тоже делается очень просто:

sudo apt install watchdog
sudo systemctl enable watchdog
sudo systemctl start watchdog

Выводы

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

Читайте также:  Как измерить амплитуду колебаний

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

Когда я пытаюсь выключить / перезагрузить систему, она зависает навсегда. Это добавляется на Ubuntu 16.04 64 бит. Он добавляется на одном компьютере на обновленном Kubuntu (14.04 »16.04), на новом установленном Lubuntu 16.04 и событии на живом компакт-диске (iso загружается с жесткого диска с grml-rescue).

Он добавляет если я завершаю / перезагружаюсь из Desktop Enviroment, и если я делаю это с терминала.

Проблема не связана с Ubuntu 14.04, установленным на том же жестком диске.

Я попытался запустить fdisk в разделе, но ошибок не было найдено.

Я попытался добавить параметр irqpoll к системе boot

Кто-то разрешил, отключив поддержку устаревших usb3 на биосе, но моя материнская плата очень старая, у меня нет поддержки usb3 на bios

Этот ответ https://askubuntu.com/a/769953/23130 рассказал о двух возможных проблемах: systemctl и swap

, но ни одна из тем не работает

предыдущий ответ указал на интересное обсуждение Launchpad https://askubuntu.com/a/769953/23130

, где есть вводный текст, который гласит:

Если вы столкнулись с зависанием, напишите файл отдельный отчет об ошибке и следуйте инструкциям отладки, описанным в разделе «Отладка проблем загрузки / выключения» в /usr/share/doc/systemd/README.Debian.gz, чтобы проверить, есть ли какие-либо зависания при завершении работы. Захват экранной фотографии «journalctl -b» в спасательной оболочке может быть просветляющим.

Итак, инструкции по debbuging говорят

, а затем, когда зависает зависание, у вас есть консоль на VT9 CTRL + ALT + F9, где вы можете сделать

, чтобы найти единицы с активным состоянием

, все заданные задания указаны в состоянии активным , единственным с запущенным состоянием является upower.service, который выделен жирным шрифтом.

Итак, я выключил компьютер и снова запустился, теперь на терминале, который я сделал

, поэтому я попытался выключите его и отключите его для будущего

Затем я снова попытался сбить с консоли отладки

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

Читайте также:  Mikrotik настройка usb модема

Загрузка без запуска параметров grub. Я вижу, что выключение зависает на выходной строке

Эти это строки syslog об отключении

Это мой вывод lshw

Может ли кто-нибудь мне помочь? Мне невероятно, что такая серьезная ошибка влияет на LTS.

Моя ситуация очень похожа на Завершение зависания в течение 5 минут на Kubuntu 14.04 , но я использую 14.10 с средой gnome вместо KDE (Ubuntu с пакетом gnome добавлен не на родной версии). Это само по себе не должно вызывать его, поскольку у меня есть сотрудники с одинаковым оборудованием и настройкой без проблем.

Экранный экран выключения печатает одну и ту же строку

В отличие от оригинального плаката у меня нет установленного диспетчера модемов, и между диспетчером nm нет ничего вывода и деактивации swap для меня в качестве ориентира: /

Если кто-то знает какие-то вещи для проверки или способ принудительного отключения после 60 секунд подвески против 300, это будет очень признательно.

4 ответа

Наконец-то я нашел тяжелый способ остановить выключение раньше, чем 300 секунд. Период ожидания 300 секунд указан в /etc/init.d/sendsigs , который является скриптом выключения, который пытается убить оставшиеся процессы, которые не были успешно завершены в предыдущих частях последовательности выключения. Найдите в скрипте следующий код:

Здесь указывается максимальное время ожидания 300 секунд. Измените 300 на желаемое количество секунд больше 10 (другие части скрипта уже указывают время ожидания 10 секунд). Вам нужно будет использовать sudo для изменения этого файла, так как у него нет прав на запись для обычного пользователя.

Это очень тяжелая тактика, и это не очень хорошее долгосрочное решение. Если у вас есть сетевое хранилище файлов, которое может быть виден при завершении работы, или если any другой процесс (т. Е. MySQL) может быть законно ожидающим при выключении, не следует этому методу. Но для ноутбука или компьютера общего назначения со стандартной конфигурацией программного обеспечения он по крайней мере позволит вам выключать и перезапускать, не дожидаясь 5 минут каждый раз.

Оцените статью
ПК Знаток
Добавить комментарий

Adblock
detector