В настоящее время на Ubuntu, фактическое завершение работы выполняется console-kit-daemon
, в ConsoleKit демон, который работает с привилегиями суперпользователя. Демон ConsoleKit получает запрос на отключение от приложения панели рабочего стола через D-Bus . Политика, которая позволяет непривилегированным процессам общаться с привилегированными процессами, обрабатывается polkit (ранее PolicyKit). Вы можете эмулировать вызов ConsoleKit через, dbus-send
если хотите. В частности, чтобы заставить ConsoleKit выполнить выключение, вы можете сделать:
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" \
/org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
В Ubuntu ConsoleKit заменил Hardware Abstraction Layer (HAL), подсистему, предназначенную для того, чтобы приложения для настольных компьютеров могли обнаруживать и использовать оборудование хост-системы через переносимый и абстрактный API, независимо от типа базового оборудования. HAL сегодня устарел в большинстве дистрибутивов Linux. Эквивалентный dbus-send
вызов с использованием HAL:
dbus-send --print-reply --system --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer/org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
В настоящее время ConsoleKit активно не поддерживается. Фокус проекта freedesktop.org сместился в сторону встроенного управления местом / пользователем / сеансом системы инициализации systemd, называемой systemd-logind . Как это повлияет на дистрибутивы, которые приняли свои собственные системы инициализации, такие как upstart в Ubuntu, еще неизвестно.