ログインセッション全体でD-Busセッションを再利用する


20

複数のログインセッションを通じてマシンにアクセスします。セッションの存続期間は重複する場合と重複しない場合があります。私の場合、これらのログインセッションは現在SSHを介して常に行われていますが、ローカルセッションも処理したいです。

これらのセッションでD-Busが必要になることがありますが、GVFSを使用するために、これらのログインセッションで同じD-Busセッションを共有したいです。

これを行うための推奨される方法は何ですか?気付いていないかもしれない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「というmanページ状態--autolaunchオプションは、内部実装の詳細と考えられています(...)。とにかくlibdbus実装以外で使用する本当の理由はありません。」

DOES dbus-launchまたはD-バススイートのサポート内の別のツールが自動的に実行を検出dbus-daemonし、それに接続していますか?~/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-${DISPLAY#*:}D接続がX接続で開始された場合に必要な情報はありますが、X接続が利用できない場合はどこにも保存されていないようです。

独自のD-Busセッションファイルを作成する必要がありますか?その場合、~/.dbus/session-busディレクトリ内のファイルを使用する必要がありますか?パスは/var/lib/dbus/machine-id信頼性が高く、移植可能ですか?


1
:この答えはあなたのためのソリューションの一部である可能性があります serverfault.com/questions/405518/...
sdive

1
私は2年前にDBusをいじくり回していましたが、ソースを含め、多くのことを読んで記憶に残っていたのは、DBusはクールかもしれませんが、システムインスタンスとして一度だけ実行されるように調整されていますローカルユーザーセッションごとに、クールではなくバカになっているだけです。私の推測では、すべて自分でやらなければならない。私はそうしましたが、私はいつもXセッションを持っているので、私にとっては少し楽でした。がんばろう。
バナンイン

BLFSの本(Beyond Linux From Scratch)でdbusの設定に関する素晴らしい情報を見ました。
フィッシュ

回答:


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オプションがなければ、X Windows接続が必要だとは思わない。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.