Я пытаюсь спящий с cron с помощью команды systemctl hibernate. Тем не менее, я получаю следующую ошибку:
Failed to set wall message, ignoring: Interactive authentication required.
Failed to hibernate system via logind: Interactive authentication required.
Failed to start hibernate.target: Interactive authentication required.
See system logs and 'systemctl status hibernate.target' for details.
Если я выполняю приведенную выше команду вручную с терминала, она работает так, как ожидалось.
Как спящий режим cron?
Я использую Ubuntu 16.04.
Другой ответ велик! Но для этого требуется root cron.
Если вы хотите спящий режим из non-sudo cron, есть 2 варианта:
Создайте файл, содержащий следующее:
[Enable hibernate to be run via cron]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=yes
с именем com.0.enable-hibernation-from-cron.pkla в каталоге /etc/polkit-1/localauthority/50-local.d/.
Пояснение дано Другой ответ .
Цитата из этого:
Если пользователям разрешено использовать команды останова, но не иметь других привилегий sudo, то, как root, добавьте следующее в конец /etc/sudoers с помощью команды visudo.user hostname =NOPASSWD: /usr/bin/systemctl poweroff,/usr/bin/systemctl halt,/usr/bin/systemctl reboot
Подставьте user для вашего имени пользователя и hostname для имени хоста машины. Теперь ваш пользователь может завершить работу с sudo systemctl poweroff и перезагрузиться с помощью sudo systemctl reboot. Пользователи, желающие отключить систему, также могут использовать sudo systemctl halt. Используйте тег NOPASSWD: только если вы не хотите получать запрос на ввод пароля. В моем случае точная строка:
anmol ALL=NOPASSWD: /bin/systemctl hibernate
(обратите внимание, что расположение systemctl может отличаться в вашей системе.)
После этого вы можете записать sudo systemctl hibernate fron cron в спящий режим.
Примечание. Прямая модификация /etc/sudoers здесь здесь ; вместо этого создайте пользовательский файл sudoers под /etc/sudoers.d/, используя команду - sudo visudo -f /etc/sudoers.d/custom.