Atualmente no Ubuntu, o desligamento real é realizado por console-kit-daemon
, o daemon ConsoleKit , que é executado com privilégios de root. O daemon do ConsoleKit recebe a solicitação de desligamento do aplicativo do painel de área de trabalho por meio do D-Bus . A política que permite que processos sem privilégios falem com processos privilegiados é tratada pelo polkit (antigo PolicyKit). Você pode emular a invocação do ConsoleKit via dbus-send
, se desejar. Em particular, para dizer ao ConsoleKit para realizar um desligamento, você pode fazer:
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" \
/org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
No Ubuntu, o ConsoleKit substituiu a Camada de Abstração de Hardware (HAL), um subsistema destinado a permitir área de trabalho aplicativos para descobrir e usar o hardware do sistema host por meio de uma API portátil e abstrata, independentemente do tipo de hardware subjacente. O HAL está hoje obsoleto na maioria das distribuições do Linux. A invocação equivalente de dbus-send
usando HAL é:
dbus-send --print-reply --system --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer/org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
Atualmente, o ConsoleKit não é mantido ativamente. O enfoque do projeto freedesktop.org mudou para o gerenciamento integrado de assentos / usuários / sessões do < href="http://www.freedesktop.org/wiki/Software/systemd/"> systemd sistema init chamado systemd-logind . Como isso afetará as distribuições que adotaram seus próprios sistemas init, como o upstart no Ubuntu, continua a ser visto.