如何在Linux中以编程方式触发系统关机或重启? 最好不要求提升特权。
在旧版本(例如Ubuntu 10.04)上,我可以使用D-Bus调用HAL的org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
或Reboot
方法。 见: http :
然而,HAL看起来已经过时了,并且在Ubuntu 12.10中不存在。 现在最好的做法是什么?
您可以使用ConsoleKit 。 将org.freedesktop.ConsoleKit.Manager.Stop
DBus消息发送到org.freedesktop.ConsoleKit
。 从命令行,这将是这样的:
dbus-send \ - 系统\ --dest = org.freedesktop.ConsoleKit \ --type = method_call \ --print-reply \ --reply-timeout = 2000 \ / org / freedesktop / ConsoleKit / Manager \ org.freedesktop.ConsoleKit.Manager.Stop
如果当前用户被授权执行关机,则不需要root权限。
你也可以看看KShutdown实用程序。 它包含不同关闭方法的源代码,从ConsoleKit到Gnome和KDE API。
shutdown
命令。 但是,这需要大多数系统上的root权限。
现在关机:
shutdown -h now
现在重启:
shutdown -r now
man shutdown
更多的信息。