Если у вас есть менеджер сеансов, соответствующий Freeedesktop, вы можете использовать DBus для вызова перезапуска изнутри сеанса X. Команда выполняется:
dbus-send --system --dest=org.freedesktop.Hal --type=method_call \
--print-reply /org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Reboot int32:0
(это, вероятно, больше, чем необходимо; работает на меня). Я использую это в скрипте оболочки. Вам не нужно запускать его из root
, но вы должны запустить его изнутри сеанса X (например, в терминале). Вы можете найти более подробную информацию по этой теме по адресу https://wiki.ubuntu.com/DebuggingGNOMEPowerManager .