[英]Linux: Programatically shutdown or reboot computer from a user-level process
如何在Linux中以编程方式触发系统关闭或重新启动? 最好不需要提升特权。
在较旧的版本(例如Ubuntu 10.04)上,我可以使用D-Bus调用HAL的org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
或Reboot
方法。 请参阅: http : //people.freedesktop.org/~dkukawka/hal-spec-git/hal-spec.html#interface-device-systempower 。
但是HAL似乎已过时,并且在Ubuntu 12.10中不存在。 目前这样做的最佳实践是什么?
您可以使用ConsoleKit 。 将org.freedesktop.ConsoleKit.Manager.Stop
DBus消息发送到org.freedesktop.ConsoleKit
。 在命令行中,类似于:
dbus-send \ --system \ --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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.