Горячие клавиши для выключения компьютера в Linux
Допустим, вам нужно (как мне) назначить для выключения, перезагрузки или ждущего режима горячие клавиши. Или вы хотите включить в свой скрипт какое-то из этих действий. Либо создать свои кнопки "Выключить", и пр., в трее или на рабочем столе.
Без дополнительных настроек и ввода пароля администратора должны работать следующие команды:
Выключение
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
Перезагрузка
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
Ждущий режим
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend
Спящий режим
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate
Но можно использовать и более "естественно звучащие":)) варианты. Например, команды shutdown и pm-suspend.
(Как мне напоминают, есть ещё halt, reboot, restart, init 0, init 6, pm-hibernate, pm-powersave, pm-suspend-hybrid... Но я же написал "например" :-)
Только чтобы пользоваться ими, не вводя каждый раз пароль администратора, надо предварительно отредактировать один файлик.
Излагаю на примере Xubuntu, Debian'а, Ubuntu, и прочих дистрибутивов с sudo.
Запустите от администратора какой-нибудь текстовой редактор, например
sudo leafpad или sudo gedit
Откройте файл /etc/sudoers
Но, правильнее (как мне справедливо указали, и в шапке sudoers рекомендуют) использовать sudo visudo
Добавьте в конец файла такие строки
(только вместо ИмяВашегоПользователя не забудьте вписать имя вашего пользователя;-)
ИмяВашегоПользователя ALL=NOPASSWD: /usr/sbin/pm-suspend
ИмяВашегоПользователя ALL=NOPASSWD: /sbin/shutdown
В конце файла (обязательно!) не забудьте сделать пустую строку. И сохраните. Всё, сразу, без перезагрузки, можно будет использовать (не вводя пароль) команды
Для ждущего режима
gksudo pm-suspend
Для перезагрузки
gksudo 'shutdown -r 0'
Для выключения
gksudo 'shutdown -h 0'
В Xubuntu я назначил на них "горячие клавиши" через Меню приложений - Настройки - Диспетчер настроек - Клавиатура - Комбинации клавиш.
Комментарии
Чингачгук
3 ноября, 2013 - 22:24
Halt - вместо тысячи слов
comrade
3 ноября, 2013 - 22:39
От админа постоянно работаете? Ну, ну! Тогда оно, конечно, просто halt
А так (чтобы мог выключать бесправный пользователь:-)
sudo gedit /etc/sudoers
Добавить
ИмяВашегоПользователя ALL=NOPASSWD: /usr/sbin/halt
И вот теперь можно будет
gksudo halt
без ввода пароля
Чингачгук
3 ноября, 2013 - 22:46
Хм а sudo halt недостаточно?
comrade
3 ноября, 2013 - 22:57
В терминале, да, sudo.
А Вы попробуйте – значок запуска с командой
sudo halt
создайте – сработает он у Вас? ;-)
Кстати, у меня halt вообще компьютер правильно не выключает (как будто он срабатывает в стиле старинных блоков питания AT), видимо какой-то параметр ещё нужен...
Но
shutdown -h 0
выключает, точнее
gksudo 'shutdown -h 0'
Проверил:
из терминала sudo halt -p нормально выключило.
Так что и halt не совсем уж прост:-), к тому же в моей хубунте, например, он просто ссылка на reboot.
Чингачгук
4 ноября, 2013 - 21:37
Насколько помнится, halt и не должен выключать систему, он её останавливает, после чего становится возможным её безболезненно выключить самому (помните знаменитое «Теперь питание компьютера можно отключить»?). А для выключения всегда использовалась команда shutdown -h now, ну или её аналог.
Чингачгук
4 ноября, 2013 - 09:18
>> Запустите от администратора какой-нибудь редактор
Вот это неправильно, не какой-нибудь, а только visudo. Иначе есть все шансы сломать тонкую и чуткую структуру sudoers и придётся его восстанавливать, с помощью Live-диска, например.
comrade
4 ноября, 2013 - 09:33
Спасибо за комментарий, поправил текст:-)
Как говорится: "ламеры и хакеры инструкций не читают" — всю жизнь из текстового редактора исправлял sudoers, не подозревая об опасностях((-:
Чингачгук
4 ноября, 2013 - 21:46
Необязательно же. Теоретически должно быть достаточно делать резервную копию файла перед каждой правкой, плюс задать пароль для root. Тут, конечно, тоже могут быть свои неудобства, но, IMHO, это проще, чем учить visudo. Хотя, наверное, и «не по фэн-шую» :).
comrade
4 ноября, 2013 - 09:23
Вот (заодно уж:-) аналоги для виндовса:
Выключение компьютера
Shutdown.exe -s -t 00
Перезагрузка
Shutdown.exe -r -t 00
Блокировать компьютер
Rundll32.exe User32.dll,LockWorkStation
Гибернация
Rundll32.exe PowrProf.dll,SetSuspendState
Сон
Rundll32.exe PowrProf.dll,SetSuspendState Sleep
pomodor
4 ноября, 2013 - 16:18
А как сделать так, чтобы я нажимал на кнопку и открывался браузер с открытым набором сайтов #1 (например, новостные сайты). А потом нажимал другую кнопку и чтобы снова открывался браузер, но уже с набором сайтов №2 (например, по работе)?
comrade
4 ноября, 2013 - 16:51
Можно, например, фаерфоксом два профиля сделать:
firefox -CreateProfile NewsProf
firefox -CreateProfile WorkProf
И открывать
firefox -P NewsProf
или
firefox -P WorkProf
И в каждом свой набор домашних страниц...
А на эти команды запуска повесить горячие клавиши, или в отдельные значки запуска прописать.
__________________________________
Сам так делать не пробовал:)), получится – напишите.
(Я то просто в закладках сделал папки по темам, и потом "Открыть всё во вкладках"...)
pomodor
4 ноября, 2013 - 17:33
Спасибо. Когда ковырялся с параметрами, нашел способ еще проще: оказывается, можно через пробел перечислить в качестве аргументов все сайты, которые требуется открыть:
firefox http://site1.ru http://site1.ru http://site1.ru и так далее
Осталось Вам рассказать как мне повесить эти команды на заданные комбинации, например, Win+F1, Win+F2 и так далее. :)
comrade
4 ноября, 2013 - 18:13
Мне тоже такой способ сразу приходил на ум:-)
Но даже не стал его предлагать – не уверен, что так удобнее будет! Если только у Вас эти наборы сайтов никогда не меняются.
Хотя может даже удобнее всего было бы фаерфоксу скармливать адреса из одного или другого текстового файла, которые можно легко редактировать.
А то в разных профилях ведь и закладки разные будут, и прочее...
Но в описании параметров запуска фаерфокса я такой возможности не нашёл. Наверное экспорт из текстового файла в параметры запуска фаерфокса можно каким-нибудь башевским трюком организовать.
А с горячими клавишами я схалявил – не стал разбираться – где там их конфигурация в линуксе, и просто назначил в графическом конфигураторе настроек клавиатуры Xfce ((-:
В гноме 2, помню, тоже такая возможность была. Наверное и в KDE есть...
Чингачгук
4 ноября, 2013 - 21:51
А Менеджер Сессий (a.k.a. Session Manager — слова для гуглёжки, ибо ссылок не будет, а причина сему, полагаю, очевидна) не подойдёт? При таком подходе достаточно будет открыть броузер один раз, что, по-моему, куда быстрее.
pomodor
5 ноября, 2013 - 21:43
Менеджером сессий пользуюсь давно. В Opera он встроенный, пользовался им вплоть до момента умерщвления этого некогда славного браузера. В Chrome использую расширение Session Buddy. В обоих случаях приходится совершать дополнительные телодвижения, а значит, есть место для оптимизации.
Чингачгук
4 ноября, 2013 - 21:42
Хотя Kubuntu в тегах и не указана, наверное, стоит добавить, что почти всё вышенаписанное применимо и к ней, с той разницей, что вместо gksudo будет kdesudo.
Intercessio
5 ноября, 2013 - 20:16
Кто бы мог подумать, что такая простейшая тема вызовет такое обсуждение?
pomodor
5 ноября, 2013 - 21:37
Простые темы всегда самые интересные. Предлагаю для обсуждения еще вопрос: стоит ли стараться максимально все оптимизировать? Например, написать скрипты на все случаи жизни и развесить на хоткеи. Или необходимость потратить время на настройку и держать все комбинации в памяти перечеркивают возможный профит?
Чингачгук
9 ноября, 2013 - 08:32
глушу срвы - init 0
перезагруз - init 6
comrade
9 ноября, 2013 - 16:14
Спасибо, добавил в список :-)
init 0 или init 6 от администратора выполняется, так что "рецепт приготовления" тот же...
Чингачгук
26 июля, 2015 - 12:58
А с systemd какая-то другая ситуация. Настроил выключение-перезагрузку-спячку в файле /etc/sudoers без ввода пароля, из терминала он пароль не спрашивает, но через меню рабочего стола в xfce опять "пароль давай".
Комментировать