Archlinux не выключается компьютер

Обновлено: 04.07.2024

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Выводы

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

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

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

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

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

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

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

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

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

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

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

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

sudo journalctl -b -1 -n300

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

Выводы

Если я ставлю ShutdownWatchdogSec=0 то система зависает на заставке биоса и при этом куллер отключается.

июл 16 11:42:37 yan systemd[1]: Reached target Shutdown.
июл 16 11:42:37 yan systemd[1]: lvm2-lvmetad.socket: Succeeded.
июл 16 11:42:37 yan systemd[1]: Closed LVM2 metadata daemon socket.
июл 16 11:42:38 yan systemd[1]: dev-disk-by\x2did-ata\x2dST500DM002\x2d1BD142_W3TFFWNL\x2dpart2.swap: Succeeded.
июл 16 11:42:38 yan systemd[1]: Deactivated swap /dev/disk/by-id/ata-ST500DM002-1BD142_W3TFFWNL-part2.
июл 16 11:42:38 yan systemd[1]: dev-disk-by\x2dpartuuid-c19b8459\x2d334e\x2d374c\x2db41f\x2d9f45587409f4.swap: Succeeded.
июл 16 11:42:38 yan systemd[1]: Deactivated swap /dev/disk/by-partuuid/c19b8459-334e-374c-b41f-9f45587409f4.
июл 16 11:42:38 yan systemd[1]: dev-disk-by\x2did-wwn\x2d0x5000c5007d5b7624\x2dpart2.swap: Succeeded.
июл 16 11:42:38 yan systemd[1]: Deactivated swap /dev/disk/by-id/wwn-0x5000c5007d5b7624-part2.
июл 16 11:42:38 yan systemd[1]: dev-disk-by\x2dpath-pci\x2d0000:00:13.0\x2data\x2d1\x2dpart2.swap: Succeeded.
июл 16 11:42:38 yan systemd[1]: Deactivated swap /dev/disk/by-path/pci-0000:00:13.0-ata-1-part2.
июл 16 11:42:38 yan systemd[1]: dev-sda2.swap: Succeeded.
июл 16 11:42:38 yan systemd[1]: Deactivated swap /dev/sda2.
июл 16 11:42:38 yan systemd[1]: dev-disk-by\x2duuid-dc9a8826\x2d4922\x2d4db7\x2d96ef\x2d63f24361b061.swap: Succeeded.
июл 16 11:42:38 yan systemd[1]: Deactivated swap /dev/disk/by-uuid/dc9a8826-4922-4db7-96ef-63f24361b061.
июл 16 11:42:38 yan systemd[1]: Reached target Unmount All Filesystems.
июл 16 11:42:38 yan systemd[1]: Reached target Final Step.
июл 16 11:42:38 yan systemd[1]: systemd-poweroff.service: Succeeded.
июл 16 11:42:38 yan systemd[1]: Finished Power-Off.
июл 16 11:42:38 yan audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj==unconfined msg='unit=systemd-poweroff comm=>
июл 16 11:42:38 yan audit[1]: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj==unconfined msg='unit=systemd-poweroff comm=">
июл 16 11:42:38 yan systemd[1]: Reached target Power-Off.
июл 16 11:42:38 yan systemd[1]: Shutting down.
июл 16 11:42:38 yan audit: BPF prog-id=6 op=UNLOAD
июл 16 11:42:38 yan audit: BPF prog-id=5 op=UNLOAD
июл 16 11:42:38 yan audit: BPF prog-id=4 op=UNLOAD
июл 16 11:42:38 yan audit: BPF prog-id=3 op=UNLOAD
июл 16 11:42:38 yan systemd-shutdown[1]: Syncing filesystems and block devices.
июл 16 11:42:39 yan systemd-shutdown[1]: Sending SIGTERM to remaining processes…
июл 16 11:42:39 yan systemd-journald[276]: Journal stopped

В чем проблема и как решить?

Решено
Добавил в /etc/defaul/grub:
GRUB_CMDLINE_LINUX_DEFAULT=«reboot=bios»
GRUB_CMDLINE_LINUX=«acpi=force»
И так-же в BIOS изменил securiti boot -> disable и boot model -> UEFI only.

Вы когда-нибудь пытались выключить систему Linux, но обнаруживали, что она отказывается выключаться? Мы все были там! Даже самая лучшая технология с открытым исходным кодом иногда имеет проблемы! Если вам надоело нажимать выключатель питания, чтобы выключить зависший ПК с Linux, или, может быть, вы не можете физически выключить его, так как это удаленный компьютер, это руководство для вас! Вот как выключить компьютер с Linux, который не выключается!

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

Чтобы получить доступ к режиму TTY в вашей системе Linux, нажмите Ctrl + Alt + F2. Открыв аварийную консоль TTY, найдите экран входа в систему и введите «root» в качестве пользователя. В качестве альтернативы используйте имя пользователя, если учетная запись root отключена.

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


Или сделай sudo -s чтобы получить root-доступ с обычным пользователем, выполните:

Не можете получить доступ к телетайпу, так как вы используете удаленное соединение? Получите root на удаленной консоли SSH с помощью:

Затем с root-доступом введите выключить команда для мгновенного выключения удаленного компьютера.

Чтобы использовать команду перезагрузки, вам необходимо иметь доступ к консоли TTY. Чтобы получить к нему доступ, нажмите Ctrl + Alt + F2 на клавиатуре. Затем, когда появится консоль командной строки, введите «root» в ящик пользователя, чтобы войти в систему с правами root. Или, если вы отключили root-доступ, войдите в систему с традиционной учетной записью.

После входа в систему с учетной записью root воспользуйтесь перезагружать команда для перезапуска системы Linux, фактически заставляя ее выключить и снова включить.


В перезагружать command также имеет возможность полностью отключить систему с помощью переключателя командной строки. Этот переключатель, известный как «f», будет указывать перезагружать команда для полного выключения системы Linux, а не перезапуска. Чтобы использовать его, введите команду ниже.

Используете традиционную учетную запись пользователя, а не пользователя root? Делать:

Или завершите работу с помощью:

Те, кто не может использовать режим TTY, должны выполнить следующие команды в сеансе терминала. Обязательно используйте «-F» если вы хотите сделать перезагружать команда принудительного выключения.

В наши дни система инициализации Systemd встроена в большинство операционных систем Linux. Одним из наиболее значительных преимуществ использования системы инициализации Systemd является то, что она имеет множество применений, которые легко понять, поскольку синтаксис командной строки упрощен.

Если вы пытаетесь выключить компьютер с Linux и не можете использовать команды poweroff или reboot, используя systemctl poweroff так же хорош, как и сообщает системе инициализации Systemd (инструменту, который помогает вашей системе Linux включаться и выключаться, а также выполнять множество других действий), чтобы все выключилось.

Когда аварийная консоль TTY появится на экране, введите «root» в ящик пользователя, чтобы войти в учетную запись root и получить доступ к командной строке root. Или войдите в систему с обычным пользователем, если вы не можете использовать учетную запись root. Оттуда запустите systemctl poweroff команда, чтобы выключить все мгновенно.


Или, если вы используете обычного пользователя, сделайте:

Не можете использовать режим телетайпа? Введите следующие команды в терминал SSH.

Перезагрузить

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


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

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

Читайте также: