Linux
DE如何呼叫ACPI函式?
好的,首先,這不是我面臨的問題,但我想更好地理解這一點。
如果我想從命令行關閉/重新啟動我的機器,我需要呼叫:
$ 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