$ displayがlocalhost:0,0に設定されているのがわかります。vncサーバーで実行している場合、これは正しくない可能性があります。ログインスクリプトで自動的に設定する方法はありますか?
あなたはバッシュを使いますか?ホームディレクトリの.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
これが私がたたき上げたものです。最後に起動した「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ファイルにドロップできるだけです。
私はここで、私が解決した過去の問題に基づいて推測しています:
私は2つの解決策に終わりました。私の元のソリューションは、rshの使用に基づいていました。それ以来、ほとんどのサーバーにsshがインストールされているため、これが簡単になっています。
Rshを使用して、PerlでこのプロセスをガイドするマシンとOSとカスタムオプションの表をまとめました。 Bourne Shellは十分ではなく、SunまたはHPマシンにはbashがありませんでした(当時、AIXにはbashがありませんでした-AIX 5Lはまだリリースされていませんでした)。ほとんどのLinuxボックスにはpdkshがインストールされていないため、Korn Shellもあまり選択肢になりませんでした。しかし、これらの制限に直面しない場合は、kshまたはbashでアイデアを実装できると思います。
とにかく、私は基本的に 'rsh $ machine -l $ user "$ cmd"'を実行します。$ machineはもちろん、私がログインしているマシン、$ userでした(同様に明白です) "私は完全に理解していない理由でいくつかのマシンに複数のルートがあるのでこれにはいくつかの差異がありました)、そして$ cmdは基本的に" DISPLAY = $ DISPLAY xterm "でしたが、例えばkonsoleを起動している場合、$ cmdは「konsole --display = $ DISPLAY」。 $ DISPLAYはローカルで評価され(適切に設定されている場合)、rshを介して文字通り渡されないため、表示は常に正しく設定されます。
また、DISPLAYがすでに設定されている場合は、リセットDISPLAYのような愚かなことを誰も行わないようにする必要もあります。
今、私はただsshを使用し、サーバー(sshd_config)でX11Forwardingがyesに設定されていることを確認してから、マシンにsshし、Xコマンドで暗号化されたワイヤを通過させると、常にに戻ります適切な場所。
Vncserverには、ディスプレイ番号を設定する設定ファイルがあります。これを自動的に行うには、1つの解決策は、このファイルを解析し、数値を抽出して正しく設定することです。より単純な(より良い)方法は、この表示番号を構成スクリプトで設定し、VNCサーバーの構成とinitスクリプトの両方で使用することです。
ログインしたら、正しい$ DISPLAYをエクスポートするようにvncクライアントに指示する必要があります。その方法は、おそらくvncクライアントによって異なります。