Linux

DE如何呼叫ACPI函式?

  • August 13, 2012

好的,首先,這不是我面臨的問題,但我想更好地理解這一點。

如果我想從命令行關閉/重新啟動我的機器,我需要呼叫:

$ sudo poweroff
$ sudo reboot

也就是說,我需要 root 權限才能進行這些 ACPI 呼叫。

但是,我啟動我的 DE,(我使用 XFCE)沒有授予它 root 權限: $ startxfce4 –with-ck-launch

現在,我知道該--with-ck-launch參數有助於讓 XFCE 關閉/重新啟動我的系統,但我不明白如何。

什麼允許 ConsoleKit 在沒有 root 權限的情況下關閉?如何在沒有超級使用者權限的情況下更改執行級別?既然有可能,我如何在沒有 root 權限的情況下從控制台關閉我的機器?

您可以通過 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

引用自:https://unix.stackexchange.com/questions/45302