それがlocalhost:0.0に設定されているのがわかります$DISPLAY
が、vncサーバーで実行している場合、これは正しくない可能性があります。ログインスクリプトで自動的に設定する方法はありますか?
5 に答える
これが私がたった今ノックアップしたものです。最後に起動された「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ファイルにドロップできるはずです。
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
過去に解決した問題に基づいて、ここで推測しています。
- マシン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 コマンドが暗号化されたネットワークを通過するようにします。適切な場所。
ログインしたら、正しい $DISPLAY をエクスポートするように vnc クライアントに指示する必要があります。その方法は、おそらく vnc クライアントによって異なります。