アスター2

アスター2

リモートホストへのログインを使用してssh -X me@host正常に実行されましたgnome-terminal -e "tail -F /var/log/file" &。ログアウトして翌日同じ操作を試みると、次のメッセージが表示されます。

セッションバスを取得できません。ソケット /tmp/dbus-K99gT9yDjS に接続できません。非工場モードに戻る接続が拒否されました。 GConf悪魔を召喚できませんでした。構成サーバーへの接続に失敗しました。 ORBitのTCP / IPネットワーキングを有効にする必要があるか、システムの競合が原因でNFSロックが期限切れになっている可能性があります。バラよりhttp://projects.gnome.org/gconf/参考用。 (詳細情報 - 1:セッションに接続できません:ソケット/tmp/dbus-K99gT9yDjSに接続できません:接続が拒否されました)

この場合、gnome-terminalをどのように実行しますか?

ベストアンサー1

実際に SSH セッションが開かれると、dbus セッションは開始されません。一部のプログラムではこれを開始できますが、セッションはそれを認識しません(したがって閉じることはできません)。

dbusセッションを理解していないということは、dbusを使用しますが、自分で起動しないプログラムに問題があることを意味します。

dbus部分はマシン別、X11モニター別です。この情報は$ HOME / .dbus / session-bus /に保存されていますが、そこで参照されているプロセスがダウンしている可能性があるため、dbusを起動する必要があるかどうかを判断するには追加の確認が必要です。次に変数をセッションにエクスポートします。

それからそれは魅力のように動作します:)

.bash_profileファイルに以下を入れました。

# set dbus for remote SSH connections
if [ -n "$SSH_CLIENT" -a -n "$DISPLAY" ]; then
    machine_id=$(LANGUAGE=C hostnamectl|grep 'Machine ID:'| sed 's/^.*: //')
    x_display=$(echo $DISPLAY|sed 's/^.*:\([0-9]\+\)\(\.[0-9]\+\)*$/\1/')
    dbus_session_file="$HOME/.dbus/session-bus/${machine_id}-${x_display}"
    if [ -r "$dbus_session_file" ]; then
            export $(grep '^DBUS.*=' "$dbus_session_file")
            # check if PID still running, if not launch dbus
            ps $DBUS_SESSION_BUS_PID | tail -1 | grep dbus-daemon >& /dev/null
            [ "$?" != "0" ] && export $(dbus-launch) >& /dev/null
    else
            export $(dbus-launch) >& /dev/null
    fi
fi

export $(dbus-launch)注:hostnamectlはsystemdの一部であり、dbus-launchの出力を検索し、変数をエクスポートする方法でシステムIDとdbus-launchを検索して目的の変数を表示できます。

おすすめ記事