web-dev-qa-db-ja.com

DEはどのようにACPI関数を呼び出しますか?

さて、最初に、これは私が直面している問題ではありませんが、これをよりよく理解したいと思います。

コマンドラインからマシンをシャットダウン/再起動したい場合は、次のコマンドを呼び出す必要があります。

$ Sudo poweroff
$ Sudo reboot

つまり、これらのACPI呼び出しを行うにはroot権限が必要です。

ただし、root権限を付与せずにDEを起動します(XFCEを使用します):$ startxfce4 --with-ck-launch

今、私は--with-ck-launchパラメータは、XFCEがシステムをシャットダウン/再起動するのに役立ちますが、その方法がわかりません。

ConsoleKitがroot権限なしでシャットダウンできるのはなぜですか?スーパーユーザー権限なしでランレベルを変更するにはどうすればよいですか?そして、それが可能であるため、root権限なしでコンソールからマシンをシャットダウンするにはどうすればよいですか?

6
darnir

Dbusを介してConsoleKitと通信できます。たとえば、dbus-sendツールを使用すると、いくつかの注目すべきコマンドは次のとおりです。

シャットダウン:

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.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Suspend int32:0

新しいシステムの場合

dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend
2
Alex L.