Ich greife über mehrere Anmeldesitzungen auf einen Computer zu. Die Lebensdauern der Sitzungen können sich überschneiden oder nicht. In meinem Fall sind diese Anmeldesitzungen derzeit immer über SSH, aber ich würde es vorziehen, auch lokale Sitzungen abzuwickeln.
In diesen Sitzungen wird manchmal D-Bus benötigt, und ich möchte dieselbe D-Bus-Sitzung für alle Anmeldesitzungen freigeben , um GVFS zu verwenden .
Was ist der empfohlene Weg, um dies zu tun? Ich möchte keine Verwendung von D-Bus unterbrechen, die mir möglicherweise nicht bekannt ist. Ich habe darüber nachgedacht
export $(dbus-launch --autolaunch $(cat /var/lib/dbus/machine-id))
aber (ab Ubuntu 12.04) scheint das nicht richtig zu sein:
- Dies erfordert eine X-Sitzung, aber meine SSH-Sitzungen leiten möglicherweise eine X-Anzeige weiter oder nicht, und selbst diejenigen, die nicht dieselbe haben
$DISPLAY
. - Wenn keine X-Anzeige verfügbar ist
dbus-launch
, wird "Autolaunch-Fehler: X11-Initialisierung fehlgeschlagen" angezeigt und kein Dämon gestartet. - Auf der
dbus-launch
Manpage heißt es: „Die--autolaunch
Option wird als internes Implementierungsdetail betrachtet (…). Es gibt keinen wirklichen Grund, es außerhalb der libdbus-Implementierung zu verwenden. “
Does dbus-launch
oder ein anderes Werkzeug in der D-Bus - Suite Unterstützung Erfassen automatisch einen Lauf dbus-daemon
und eine Verbindung zu ihm? Die erforderlichen Informationen werden angezeigt, ~/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-${DISPLAY#*:}
wenn D-Bus mit einer X-Verbindung gestartet wird. Sie werden jedoch anscheinend nirgends gespeichert, wenn keine X-Verbindung verfügbar ist.
Soll ich meine eigene D-Bus-Sitzungsdatei erstellen? Sollte ich in diesem Fall eine Datei im ~/.dbus/session-bus
Verzeichnis verwenden? Ist der Pfad /var/lib/dbus/machine-id
zuverlässig und portabel?