web-dev-qa-db-ja.com

ディスプレイを指定するにはどうすればよいですか?

firefox &など、SSHを介していくつかのプログラムを実行すると、エラーが発生します

Error: no display specified 

各プログラムのstdoutを表示したまま、多くのディスプレイを開きたいです。

最初の質問:ディスプレイを指定して、多く表示されるプログラムを取得するにはどうすればよいですか?

Pablo Santa Cruzは、解決策として次のコードを提供します。私はこれを理解できません。

$ export DISPLAY=yourmachine.yourdomain.com:0.0

$ firefox &

コマンドのyourmachineおよびyourdomain.comとは何ですか?

Xの動作方法は、ネットワークプログラムの動作方法と同じです。特定のマシンで実行される記述のサーバー(この場合はXディスプレイサーバー)があり、そのサーバーに接続して情報を表示しようとするXクライアント(firefoxなど)があります。

多くの場合(「ホーム」マシン上で)、クライアントとサーバーは同じボックスで実行され、サーバーは1つしかありませんが、Xは十分に強力であるため、これを行う必要はありません。最初から組み込まれたサーバー/クライアント分離で構築されました。

これにより、惑星の途中で(テキストモードで)ボックスにログオンし、現在表示しているボックスがディスプレイサーバーであることを伝えたり、できれば、ウィンドウが突然ローカルに表示されるようになるなど、すばらしいことができます。

クライアントがユーザーと対話するためには、サーバーをfindする方法を知る必要があります。これを行うにはいくつかの方法があります。多くのクライアントでは、-displayまたは--displayオプションで指定できます。

xeyes -display paxbox1.paxco.com:0.0

ディスプレイが特に指定されていない場合、多くはDISPLAY環境変数を使用します。この変数は他の変数と同様に設定できます。

DISPLAY=paxbox1.paxco.com:0.0; export DISPLAY # in .profile
export DISPLAY=paxbox1.paxco.com:0.0 # in your Shell
DISPLAY=paxbox1.paxco.com:0.0 firefox & # for that command (Shell permitting)

DISPLAY変数の最初の部分は、ディスプレイサーバーマシンのアドレスです。他のIPアドレスと同じルールに従います。解決可能なDNS名(localhostを含む)または特定のIPアドレス(192.168.10.55など)を指定できます。

2番目の部分はX固有です。 Xの「ディスプレイ」(Xサーバー)番号と使用する画面番号を提供します。最初の(ディスプレイ番号)は一般に、1つ以上の画面を含むが、単一のキーボードとマウス(つまり、1つの入力ストリーム)を持つデバイスのグループを指します。通常、画面番号はそのグループ内の特定の画面を示します。

例は次のとおりです。

+----------------------------------------+
|paxbox1.paxco.com|                      |
+-----------------+                      |
|                                        |
|  +----------+----+  +----------+----+  |
|  |Display :0|    |  |Display :1|    |  |
|  +----------+    |  +----------+    |  |
|  |               |  |               |  |
|  | +-----------+ |  |               |  |
|  | |Screen :0.0| |  |               |  |
|  | +-----------+ |  |               |  |
|  | +-----------+ |  |               |  |
|  | |Screen :0.1| |  |               |  |
|  | +-----------+ |  |               |  |
|  | +-----------+ |  | +-----------+ |  |
|  | |Screen :0.2| |  | |Screen :1.0| |  |
|  | +-----------+ |  | +-----------+ |  |
|  | +-----------+ |  | +-----------+ |  |
|  | |Screen :0.3| |  | |Screen :1.1| |  |
|  | +-----------+ |  | +-----------+ |  |
|  | +-----------+ |  | +-----------+ |  |
|  | | Keyboard  | |  | |  Keyboard | |  |
|  | +-----------+ |  | +-----------+ |  |
|  | +-----------+ |  | +-----------+ |  |
|  | |   Mouse   | |  | |   Mouse   | |  |
|  | +-----------+ |  | +-----------+ |  |
|  +---------------+  +---------------+  |
|                                        |
+----------------------------------------+

ここには、2台のディスプレイサーバーを備えた単一のマシン(paxbox1.paxco.com)があります。最初の画面には4つの画面があり、2番目の画面には2つの画面があります。可能性は次のとおりです。

DISPLAY=paxbox1.paxco.com:0.0
DISPLAY=paxbox1.paxco.com:0.1
DISPLAY=paxbox1.paxco.com:0.2
DISPLAY=paxbox1.paxco.com:0.3
DISPLAY=paxbox1.paxco.com:1.0
DISPLAY=paxbox1.paxco.com:1.1

実際のウィンドウを表示する場所と、使用する入力デバイスによって異なります。

68
paxdiablo
$ export DISPLAY=yourmachine.yourdomain.com:0.0
$ firefox &
18

SSH経由で別のマシンに接続している場合、SSHでX-Forwardingを有効にすると、Xウィンドウが暗号化されてSSHトンネルを介してマシンに転送されます。 X転送を有効にするには、-Xをsshコマンドラインに追加するか、SSH構成ファイルでForwardX11 yesを設定します。

X-Forwardingが正常にセットアップされたかどうかを確認するには(サーバーが許可していない可能性があります)、echo $DISPLAYlocalhost:10.0のようなものを出力するかどうかを試してください。

12
TobiX

試して

export DISPLAY=localhost:0.0
11
sreenath

xorg-x11-xauthパッケージをインストールしてみてください。

6
thegriglat

私は同様の問題に遭遇したので、おそらくこの答えは誰かを助けるでしょう。

Error: no display specifiedエラーの理由は、Firefoxが起動されているが、リモートホストで実行されているXサーバー(GUI)がないことです。 X11転送を使用して、リモートホスト上でFirefoxを実行できますが、ローカルホスト上で表示できます。 Mac OS Xでは、X11転送を使用するために XQuartz をダウンロードする必要があります。これがないと、$DISPLAY変数が設定されないため、echo $DISPLAYを試してみると空白になります。

5
Andrew

今日も同様の問題に直面しました。それで、ここに簡単な解決策があります:マシンにSSHをしている間に、 Ctrl - Y

ssh user@ip_address -Y

ログイン後、firefox &と入力します。そして、あなたは行ってもいいです。

5
Nandita Shukla

SSH経由で接続するときは、$ DISPLAYを手動で設定しないでください。
SSH -X経由で接続し、$ DISPLAYが空のままの場合、これは通常、暗号化されたチャネルを確立できなかったことを意味します。

パッケージxauthまたはxorg-x11-xauthが欠落している可能性があります。次を使用して、リモートマシンにインストールしてください。

Sudo apt-get install xauth

または

Sudo apt-get install xorg-x11-xauth

その後、SSH接続を再起動します。 Xウィンドウの出力がローカルマシンに転送されるように、SSH -Xを使用することを忘れないでください。

次に、echo $DISPLAYagainを試して、$ DISPLAYがSSHデーモンによって自動的に設定されているかどうかを確認します。 IPアドレスとポートを含む行が表示されます。

5
Jpsy

経由でサーバーにログインする

ssh -X root@yourIP

/ etc/ssh/sshd_configファイルを編集し、この行を追加します。

X11UseLocalhost no

Sshdを再起動します。 CentOSの場合( ディストリビューションを確認

/sbin/service sshd restart

ディスプレイを確認してください

echo $DISPLAY

これが見えるはずです

yourIP:10.0

楽しい

firefox

詳細

4
Ammar Bozorgvar

CentOS 6.8でも同じ問題に直面しました。

yum reinstall xorg*

現在のセッションを終了し、mobiXtermなどのツールで別のセッションを開きます。セッションでX11転送がツールで有効になっていることを確認してください。

1
Srihari Karanth

VNCを使用してX11をさらに理解します。ディスプレイを指定して多数表示されるプログラムを取得するには、DISPLAY = IP:DisplayNum.ScreenNumをエクスポートします。

例えば、

vncserver :2
vncserver -list
echo '$DISPLAY'=$DISPLAY 
export DISPLAY=:2  # export DISPLAY=IP:DisplayNum or export DISPLAY=:DisplayNum for localhost; So that can vnc connect and see the vnc desktop :2 if $DISPLAY is not :2.
echo '$DISPLAY'=$DISPLAY
0
Yang