Atualmente no Ubuntu, o desligamento real é realizado pelo daemon console-kit-daemon
do ConsoleKit , que é executado com privilégios de root. O daemon do ConsoleKit recebe a solicitação de desligamento do aplicativo do painel da área de trabalho via D-Bus . A política que permite que processos não privilegiados se comuniquem com processos privilegiados é tratada pelo polkit (anteriormente PolicyKit). Você pode emular a chamada do ConsoleKit via, dbus-send
se desejar. Em particular, para pedir ao ConsoleKit para executar um desligamento, você pode:
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" \
/org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
No Ubuntu, o ConsoleKit substituiu o Hardware Abstraction Layer (HAL), um subsistema destinado a permitir que aplicativos de desktop descubram e usem o hardware do sistema host por meio de uma API portátil e abstrata, independentemente do tipo de hardware subjacente. Hoje, o HAL está obsoleto na maioria das distribuições Linux. A dbus-send
chamada equivalente 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 foco do projeto freedesktop.org mudou para o gerenciamento interno de assento / usuário / sessão do sistema systemd init chamado systemd-logind . Ainda não se sabe como isso afetará as distribuições que adotaram seus próprios sistemas init, como o iniciante no Ubuntu.