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

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

まあ、まずこれは私が直面した問題ではありませんが、この問題をよりよく理解したいと思います。

コマンドラインからコンピュータをシャットダウン/再起動するには、次を呼び出す必要があります。

$ sudo poweroff
$ sudo reboot

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

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

この--with-ck-launchパラメータがXFCEがシステムをシャットダウン/再起動するのに役立つことを知っていますが、どうするかはわかりません。

ConsoleKitがroot権限なしで終了するのはなぜですか?スーパーユーザー権限なしでランレベルを変更するには?これで可能になりました。 root権限なしでコンソールで自分のマシンをシャットダウンするにはどうすればよいですか?

答え1

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

関連情報