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

Здравствуйте!

Помогите найти решение проблемы с выключением после обновления OpenSUSE на моем ноутбуке. При попытке выключения все процессы завершаются (клавиатура, мышь и экран), но питание не отключается - вентиляторы продолжают работать и светодиоды остаются включенными.

Как устранить эту проблему?
  • 14 октября 2023 г. 13:38
Ответы на вопрос 4
Для выполнения операции выключения компьютера в Linux используется сигнал SIGTERM (Terminate). Он отправляется процессу init (который имеет PID 1), который затем выполняет различные действия, такие как остановка всех служб, размонтирование файловых систем и, наконец, выключение питания.

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

1. Проверьте, что в вашей системе установлен пакет acpid (Advanced Configuration and Power Interface daemon), который отвечает за обработку событий питания. Если он не установлен, выполните команду `sudo zypper install acpid` для его установки.

2. Попробуйте выполнить выключение с использованием команды `sudo shutdown -h now`. Эта команда отправляет сигнал выключения напрямую процессу init.

3. Если предыдущие шаги не помогли, попробуйте добавить параметр ядра в файле конфигурации загрузчика. Откройте файл `/etc/default/grub` с помощью текстового редактора (например, `sudo nano /etc/default/grub`) и найдите строку, начинающуюся с `GRUB_CMDLINE_LINUX_DEFAULT`. Добавьте к этой строке параметр `acpi=force`, сохраните изменения и выполните команду `sudo update-grub`. После перезагрузки системы попробуйте выполнить выключение.

4. Если вы используете UEFI загрузчик, попробуйте добавить параметр `acpi_osi=` с различными значениями (например, `"Windows 2021"` или `'!Windows 2019'`) в файле `/etc/default/grub` и выполнить обновление загрузчика с помощью команды `sudo update-grub`.

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