Я получаю доступ к машине через несколько сеансов входа в систему. Время жизни сессий может или не может пересекаться. В моем случае эти сеансы входа в систему всегда выполняются по SSH, но я бы предпочел также обрабатывать локальные сеансы.
Иногда мне требуется D-Bus в этих сеансах, и я хочу использовать один и тот же сеанс D-Bus для всех сеансов входа в систему, чтобы использовать GVFS .
Каков рекомендуемый способ сделать это? Я не хочу отказываться от использования D-Bus, о котором я могу не знать. Я подумал об использовании
export $(dbus-launch --autolaunch $(cat /var/lib/dbus/machine-id))
но (по состоянию на Ubuntu 12.04) это не так:
- для этого требуется сеанс X, но мои сеансы SSH могут или не могут передавать X-дисплей, и даже те, которые не совпадают
$DISPLAY
; - если X-дисплей недоступен,
dbus-launch
выдает сообщение об ошибке «Ошибка автозапуска: инициализация X11 не удалась» и не запускает демон; - на
dbus-launch
странице руководства говорится, что «--autolaunch
опция рассматривается как внутренняя деталь реализации (…). В любом случае, нет никакой реальной причины использовать его за пределами реализации libdbus ».
dbus-launch
Поддерживает ли другой инструмент в наборе D-Bus автоматическое обнаружение работающего dbus-daemon
и подключающегося к нему? Необходимая информация находится в том ~/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-${DISPLAY#*:}
случае, если D-Bus запускается с X-соединением, но, кажется, нигде не сохраняется, если X-соединение недоступно.
Должен ли я загрузить свой собственный файл сеанса D-Bus? Если я это сделаю, я должен использовать файл в ~/.dbus/session-bus
каталоге? Является ли путь /var/lib/dbus/machine-id
надежным и портативным?