Многим известны команды shutdown, halt, reboot, но у них есть как минимум два недостатка:
К счастью, мы живём в просвещённый век D-Bus, где это уже решено.
Среда KDE тесно интегрирована с этой системой и предоставляет метод org.kde.KSMServerInterface.logout для корректного завершения работы компьютера: qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout -1 -1 -1 Рассмотрим параметры, которые передаются методу. Для начала, -1 передаёт значение по умолчанию. Первый параметр называется confirm и отвечает за подтверждение завершения работы. 0 приводит к непосредственному выключению, а 1 вызывает всем известное окошко с 30 секундной задержкой. Второй параметр — sdtype — выбирает тип завершения работы:
qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout -1 -1 -1
Третий параметр — sdmode — выбирает режим завершения работы:
Также можно воспользоваться ConsoleKit и UPower:
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
Чтобы не запоминать все эти простыни, можно добавить соответствующие алиасы в конфиг вашего шелла. Например, я добавил в ~/.zshrc alias haltk='qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout 1 2 2'alias rebootk='qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout 1 1 2'alias logoutk='qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout 1 3 2'alias haltd='dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop'alias rebootd='dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart'
alias haltk='qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout 1 2 2'alias rebootk='qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout 1 1 2'alias logoutk='qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout 1 3 2'alias haltd='dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop'alias rebootd='dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart'
Забавно и иногда удобно.. :-)
Здорово, но есть вопрос: "Это что все это надо в терминале набирать? Да я ж стока не запомню!" Вот halt/reboot в памяти прочно сидят)))
Так предлагают же алиасы сделать и будет тебе счастье.
Аа, извиняюсь, до туда не осилил)))
Спасибо, очень полезные алиасы!
Для того, чтобы использовать команды shutdown, halt, reboot надо добавить пользователя в группу operator.
Спасибо, но для меня важнее пункт 2.
Прям куча полезной инфы в одном месте. Спасибо. :)
Подробнее о форматировании
Забавно и иногда удобно.. :-)
Здорово, но есть вопрос: "Это что все это надо в терминале набирать? Да я ж стока не запомню!" Вот halt/reboot в памяти прочно сидят)))
Так предлагают же алиасы сделать и будет тебе счастье.
Аа, извиняюсь, до туда не осилил)))
Спасибо, очень полезные алиасы!
Для того, чтобы использовать команды shutdown, halt, reboot надо добавить пользователя в группу operator.
Спасибо, но для меня важнее пункт 2.
Прям куча полезной инфы в одном месте. Спасибо. :)
Отправить комментарий