В Ubuntu 18,19,20 спящий режим системы
команда требует судо
для его выполнения:
Разрешение «systemctl suspend» и «systemctl hibernate»
Чтобы отключить запрос пароля спящий режим systemctl
команда должна быть добавлена в список sudoers (/etc/sudoers.tmp
)
Использовать Судо Визудо
команду и добавьте в конец файла следующую строку:
<user_name> ALL=NOPASSWD: /usr/bin/systemctl hibernate
Но теперь есть ошибка в Простое меню выключения
расширение. Спящий режим выполняется в нем с помощью спящий режим systemctl
, не по sudo systemctl спящий режим
как требуется. Эта реализация находится в файле [email protected]/extension.js
Я создал соответствующую проблему для этого расширения:
Ошибка в Ubuntu 20.04: нажатие кнопки [Hibernate] просит ввести пароль перед переходом в спящий режим
Последний коммит был сделан около 1 года назад. Таким образом, расширение активно не поддерживается.
Ниже приведены полные сведения о проблеме с обходным путем:
Ожидаемое поведение
Нажатие Спящий режим
кнопка выполнения sudo systemctl спящий режим
.
Если в списке sudoers есть соответствующий пользователь (/etc/sudoers.tmp
Отредактировано Судо Визудо
):
<user_name> ALL=NOPASSWD: /usr/bin/systemctl hibernate
действие hibernate выполняется сразу после нажатия Спящий режим
кнопка.
Фактический результат
При нажатии кнопки [Hibernate] запрашивается ввод пароля пользователя для выполнения авторизации действия.
В системном журнале (меньше /var/log/syslog
) возникает ошибка - "Не удалось перевести систему в спящий режим через logind: Отказано в доступе":
02:51:06 gnome-shell[1983]: st_widget_get_theme_node вызвал виджет [0x564b127af6f0 Gjs_ui_popupMenu_PopupSubMenuMenuItem.popup-menu-item popup-submenu-menu-item:last-child ("")], который не находится на стадии.
02:51:06 Tgnome-shell[1983]: st_widget_get_theme_node вызвал виджет [0x564b127b6d00 StWidget:last-child], который не находится на стадии.
02:51:06 gnome-shell[1983]: st_widget_get_theme_node вызвал виджет [0x564b12781480 StBoxLayout ("")], который не находится на сцене.
02:51:13 systemd[1735]: Запущено приложение, запущенное gnome-shell.
02:51:13 gnome-shell[5729]: не удалось перевести систему в спящий режим через logind: доступ запрещен
02:51:27 gnome-shell[5729]: не удалось запустить hibernate.target: доступ запрещен
02:51:27 gnome-shell[5729]: подробности см. в системных журналах и 'systemctl status hibernate.target'.
После ввода пароля действие гибернации, вероятно, выполняется не спящий режим systemctl
но какая-то другая команда. Я не уверен, но может быть спящий режим
или же впадать в спячку
команды - что не рекомендуется.
Разница между «pm-hibernate» и «systemctl hibernate»
Довольно кратким ответом на это будет то, что systemd активно поддерживается, а pm-utils — нет.
На самом деле pm-utils не обновлялся с 2010 года, так что я бы считал этот софт и древним, и устаревшим.
С этого момента рекомендуется использовать systemctl.
Разница между «systemctl hibernate» и «hibernate»:
Команда hibernate была заменена на systemctl hibernate. Рекомендуется использовать systemctl hibernate. Команда hibernate по-прежнему доступна в системе из соображений совместимости.
В Ubuntu 18,19,20 спящий режим системы
команда требует судо
для его выполнения:
Разрешение «systemctl suspend» и «systemctl hibernate»
В реализации SimplerOffMenu
расширение в Спящий режим
кнопка, которую использует обработчик
спящий режим systemctl
, нет sudo systemctl спящий режим
который необходим для решения этой проблемы.
Исправить
Изменять расширение.js
файл следующим образом:
функция FuncHibernate (виджет, событие) {
Основной.обзор.скрыть(); пытаться {
//исправить запуск: добавлен sudo
//Util.trySpawnCommandLine('systemctl hibernate');
Util.trySpawnCommandLine('sudo systemctl hibernate');
//исправить конец
} поймать (ошибиться) {
Main.notify("Ошибка" + ошибка);
}
}
Зафиксированный расширение.js
файл здесь.
Обходной путь
Чтобы решить эту проблему в Ubuntu 20.04 после того, как расширение уже установлено, необходимо сделать следующее:
Измените JS-скрипт расширения, которое было установлено здесь:
/home/<your_user_name>/.local/share/gnome-shell/extensions/[email protected]/extension.js
(вы можете найти местонахождение расширение.js
файл по sudo найти /* -имя "extension.js"
)
Затем добавьте судо
как описано в исправлении выше, и сохраните файл.
Для применения исправления может быть достаточно просто сохранить файл. Я на всякий случай выполнил инструкцию от здесь:
- Отключил и включил расширение,
нажал кнопку конфигурации вкл. страница расширения
- Нажатый
Альт
+F2
, вошел р
и нажал Войти
- Вышел и снова вошел