Повторне використання сеансів D-Bus протягом сеансів входу


20

Я отримую доступ до машини через декілька сеансів входу. Тривалість сеансів може або не може збігатися. У моєму випадку ці сеанси входу в даний час завжди над 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надійний та портативний шлях ?


1
Ця відповідь може бути частиною рішення для вас: serverfault.com/questions/405518/…
sdive

1
Я багато часу поспілкувався з DBus, і все, що залишилося в моїй пам’яті від багато читати, включаючи джерела: DBus міг бути крутим, але настільки спеціально призначений для запуску один раз як системний екземпляр і точно ще раз для кожного локального сеансу користувача, що це просто нерозумно, а не круто. Я здогадуюсь, що ти повинен все робити сам. Я це робив, але у мене завжди є X сеанси, тому мені було трохи легше. Удачі.
Bananguin

Я бачив цікаву інформацію про конфігурацію dbus у книзі BLFS ( Beyond Linux From Scratch ).
Фійш

Відповіді:


6

DBus робить обмін налаштуваннями для демона dbus трохи складним.

Для мого налаштування параметри з dbus-launch --sh-syntaxзберігаються у файлі, джерелом якого є.bash_rc . Мінус цього полягає в тому, що після кожного перезавантаження цей процес виконується вручну.

Однак перевірити наявність демона DBus слід дуже просто. Скажімо, файл налаштувань знаходиться в $ HOME / .dbus_settings:

need_start=1

if [ -r "$HOME/.dbus_settings" ]
then
    . "$HOME/.dbus_settings"
fi

if [ -n "$DBUS_SESSION_BUS_PID" ]
then
    if kill -0 "$DBUS_SESSION_BUS_PID" 2>/dev/null
    then
        need_start=0  # Found one
    fi
fi

if [ "$need_start" -ne 0 ]
then
    dbus-launch --sh-syntax >"$HOME/.dbus_settings"
    . "$HOME/.dbus_settings"
fi

Без цього --autolaunchваріанту я не вважаю, що потрібне підключення до Windows.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.