12

それがlocalhost:0.0に設定されているのがわかります$DISPLAYが、vncサーバーで実行している場合、これは正しくない可能性があります。ログインスクリプトで自動的に設定する方法はありますか?

4

5 に答える 5

10

これが私がたった今ノックアップしたものです。最後に起動された「gnome-session」プロセスの環境を検査します(VNCがセッション/ウィンドウマネージャーを起動すると、DISPLAYが正しく設定されます)。「gnome-session」を、VNCサーバーが起動時に起動するプロセスの名前に置き換えます。

PID=`pgrep -n -u $USER gnome-session`
if [ -n "$PID" ]; then
    export DISPLAY=`awk 'BEGIN{FS="="; RS="\0"}  $1=="DISPLAY" {print $2; exit}' /proc/$PID/environ`
    echo "DISPLAY set to $DISPLAY"
else
    echo "Could not set DISPLAY"
fi
unset PID

それを.bashrcファイルにドロップできるはずです。

于 2009-07-21T23:47:08.780 に答える
8

Bashを使用していますか?ホームディレクトリのファイル.bashrcに移動し、変数を設定してからエクスポートします。

DISPLAY = localhost:0.0; ディスプレイのエクスポート

すべてのユーザーに対して/etc/ bashrcを使用する場合は、/ etc/bashrcを使用できます。

〜/.bash_profileおよび/etc/profileも確認することをお勧めします

編集:

function get_xserver ()
{
    case $TERM in
       xterm )
            XSERVER=$(who am i | awk '{print $NF}' | tr -d ')''(' )    
            XSERVER=${XSERVER%%:*}
            ;;
        aterm | rxvt)           
            ;;
    esac  
}

if [ -z ${DISPLAY:=""} ]; then
    get_xserver
    if [[ -z ${XSERVER}  || ${XSERVER} == $(hostname) || \
      ${XSERVER} == "unix" ]]; then 
        DISPLAY=":0.0"          # Display on local host.
    else
        DISPLAY=${XSERVER}:0.0  # Display on remote host.
    fi
fi

export DISPLAY
于 2009-06-29T09:23:49.080 に答える
1

過去に解決した問題に基づいて、ここで推測しています。

  • マシンBのvncサーバーに接続し、マシンAのVNCクライアントを使用して表示しています
  • マシン B でコンソール (xterm または同等のもの) を起動し、それを使用してマシン C に接続しています。
  • マシン C で X ベースのアプリケーションを起動し、マシン B の VNC サーバーに表示して、マシン A で表示できるようにします。

私は2つの解決策に行き着きました。私の元の解決策は、rsh の使用に基づいていました。それ以来、ほとんどのサーバーに ssh がインストールされているため、これが簡単になりました。

rsh を使用して、perl でこのプロセスをガイドするマシン、OS、カスタム オプションの表をまとめました。Bourne シェルでは十分ではなく、Sun や HP マシンには bash がありません (当時 AIX には bash がありませんでした - AIX 5L はまだリリースされていませんでした)。ほとんどの Linux ボックスには pdksh がインストールされていないため、Korn シェルもあまり選択肢にありませんでした。しかし、これらの制限に直面していなければ、ksh または bash でアイデアを実装できると思います。

とにかく、私は基本的に「rsh $machine -l $user "$cmd"」を実行します。ここで、$machine はもちろん、ログインしているマシンであり、$user でした。 " 一部のマシンには複数のルートがあるため、これには多少の差異がありましたが、その理由は完全には理解できません)。 「コンソール --display=$DISPLAY」。$DISPLAY はローカル (適切に設定されている場所) で評価され、rsh を介して文字どおりに渡されないため、表示は常に正しく設定されます。

また、すでに設定されている場合にDISPLAYをリセットするなど、誰も愚かなことをしないようにする必要がありました。

ここで、ssh を使用し、サーバー (sshd_config) で X11Forwarding が yes に設定されていることを確認します。次に、マシンに ssh で接続し、X コマンドが暗号化されたネットワークを通過するようにします。適切な場所。

于 2009-06-29T16:46:50.310 に答える
0

ログインしたら、正しい $DISPLAY をエクスポートするように vnc クライアントに指示する必要があります。その方法は、おそらく vnc クライアントによって異なります。

于 2009-06-29T11:43:47.207 に答える