`systemctl hibernate` не выполняется в скрипте crontab

По сути, эта настройка не будет работать OOTB, потому что вам нужно смонтировать какой-то раздел (, в данном случае /boot/ )на этапе initramfs/initrd, и по умолчанию там не смонтирован раздел. Без раздела /boot/ вы не можете использовать заголовок LUKS. Таким образом, единственный способ заставить его работать — это написать несколько пользовательских сценариев, которые будут монтировать/размонтировать раздел на этапе initramfs/initrd .

Мне удалось написать несколько инструкций на эту тему , и установка работает очень хорошо.

0
22.01.2020, 21:04
1 ответ

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

.

Поскольку у меня не было файла правил в /etc/polkit-1/rules.d, по умолчанию не разрешается пользователям переходить в спящий режим или приостанавливать работу машины, пока пользователь вошел в систему. (Я считаю, что проблема здесь в том, что я блокирую машину перед переходом в спящий режим., и, следовательно, существует открытая сессия)

Чтобы решить эту проблему, мне пришлось создать файл /etc/polkit-1/rules.d/99-allow-hibernate-on-low-battery.rulesсо следующим содержимым:

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.login1.suspend" ||
        action.id == "org.freedesktop.login1.suspend-multiple-sessions" ||
        action.id == "org.freedesktop.login1.hibernate" ||
        action.id == "org.freedesktop.login1.hibernate-multiple-sessions") {
        return polkit.Result.YES;
    }
});

После этого cronи atмогут корректно переводить компьютер в спящий режим

2
28.01.2020, 02:38

Теги

Похожие вопросы