コンピュータに開いているすべてのモニタを一覧表示するコマンドはありますか?

コンピュータに開いているすべてのモニタを一覧表示するコマンドはありますか?

SSHを介して自分のコンピュータにローカルに接続している場合(尋ねないでください。回避策です)、以下を実行しないとグラフィカルアプリケーションを起動できません。

export DISPLAY=:0.0

最初に実行してからグラフィックアプリケーションを実行すると、すべてが機能します。それ以外の場合は機能せず、接続するモニターはありません。

マシンで利用可能なすべてのディスプレイ(たとえば、すべての可能な値)を一覧表示するコマンドはありますか?

ベストアンサー1

SSH経由でX接続を転送するには、サーバーとクライアント側の両方でそれを有効にする必要があります。 (ディストリビューションによってはデフォルトで有効またはX11Forwarding yes無効にすることができます.) サーバー側で/etc/sshd_config(または/etc/ssh/sshd_config設定ファイルがある場合はどこでも)、クライアント側は-X次のオプションを渡します。ssh注文するForwardX11または~/.ssh/config

を実行すると(おそらく)yesがssh -X localhost表示されます。一方、SSH経由で接続されていない場合の値です。 (この部分は省略可能です。画面番号ですが、複数の画面を使用する場合はほとんどありません。)$DISPLAYlocalhost:10.0:0.0.0

  • 古いコンテンツなしでローカルに表示されます:
  • TCPディスプレイ、:

を使用すると、ssh -X localhost2台のモニターを介してXサーバーにアクセスできますが、アプリケーションは:NUMBERローカルソケットと共有メモリーを介してサーバーにアクセスする方法と、低速で一部の拡張機能が無効なHOSTNAME:NUMBERTCPを介してサーバーにアクセスする方法など、さまざまな方法を使用します。

Xサーバーにアクセスするには、通常、裏面のファイルに保存されるCookieと呼ばれる認証形式が必要です~/.Xauthority。 SSHを使用して別のユーザーアカウントにアクセスしたり、ディストリビューションでCookieを別のファイルに保存したりすると、DISPLAY=:0SSHセッション内では機能しない可能性があります(ただし、ssh -Xサーバーで有効にすると機能します。決してXAUTHORITY行われません)。混乱が必要なときssh -X)。これが問題なら、必要なものXAUTHORITY環境変数の設定または他のユーザーのCookieをインポートする

実際の質問に答えるには:

  • ローカルディスプレイはのソケットに対応します/tmp/.X11-unix

    (cd /tmp/.X11-unix && for x in X*; do echo ":${x#X}"; done)
    
  • リモートディスプレイは、開いているTCPポート6000以上に対応します。システムMのディスプレイ番号Nにアクセスするには、システムMのTCPポート6000 + Nに接続する必要があります。機械M自体から:

    netstat -lnt | awk '
      sub(/.*:/,"",$4) && $4 >= 6000 && $4 < 6100 {
        print ($1 == "tcp6" ? "ip6-localhost:" : "localhost:") ($4 - 6000)
      }'
    

    (この箇条書きの残りの部分は学問的興味のためだけのものです。)

    他のシステムでnmap -p 6000-6099 host_name開いているTCPポートの一般的な範囲を調べることができます。現在、特にループバックインターフェイスの外部でTCPソケットを受信するXサーバーはほとんどありません。

    厳密に言えば、他のアプリケーションは、Xサーバーで一般的に使用されるポート範囲を使用できます。ポートが開いているプログラムを確認して、Xサーバーがリッスンしているかどうかを確認できます。

    lsof -i -n | awk '$9 ~ /:60[0-9][0-9]$/ {print}'
    

    このようなあいまいな内容が表示された場合は、sshdXサーバーであるか、単なる偶然の一致であるかはわかりません。

おすすめ記事