简体   繁体   中英

Linux: Programatically shutdown or reboot computer from a user-level process

How do I programatically trigger a system shutdown or reboot in Linux? Preferably without requiring elevated privileges.

On older releases (eg Ubuntu 10.04) I could call HAL's org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown or Reboot methods using D-Bus. See: http://people.freedesktop.org/~dkukawka/hal-spec-git/hal-spec.html#interface-device-systempower .

However HAL appears to be obsolete, and is not present in Ubuntu 12.10. What is the current best-practice for doing this?

The shutdown command. However, that requires root privileges on most systems.

Shutdown now:

shutdown -h now

Restart now:

shutdown -r now

man shutdown for more info.

You can use ConsoleKit . Send a org.freedesktop.ConsoleKit.Manager.Stop DBus message to org.freedesktop.ConsoleKit . From the command line, that would be something like:

dbus-send \
    --system \
    --dest=org.freedesktop.ConsoleKit \
    --type=method_call \
    --print-reply \
    --reply-timeout=2000 \
    /org/freedesktop/ConsoleKit/Manager \
    org.freedesktop.ConsoleKit.Manager.Stop

If the current user is authorized to perform shutdown, then no root privileges are needed.

You can also take a look at the KShutdown utility. It contains source code for different shutdown methods, ranging from ConsoleKit to Gnome and KDE APIs.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM