VNCは、デスクトップがアクティブであることを示すことを確認し、その数を確認します。

VNCは、デスクトップがアクティブであることを示すことを確認し、その数を確認します。

いつSSHロギングLinuxコンピュータに接続して、X-Windowsデスクトップがあるかどうかをどうやって知ることができますか?展示するセッション(たとえば、VNCServerによって開始された1つ)がアクティブです。そのセッションの番号は何ですか?

理由
GUIが必要なiMacros FireFoxスクリプトをリモートで実行する場合がありますが、デスクトップが実行されていない場合は、次のコマンドを実行して実行する必要があります。

vncserver -name Computer

起動したら、その番号(例:1.0:)を知ったら、次の操作を行います。

export DISPLAY=:1.0
firefox imacros://run/?m=MyMacro.iim

私はしばしば以下を試してみます。

$ sudo ps -e | grep "vnc" -i
 1685 ?        06:28:53 Xtightvnc

しかし、数字は不明です(例:1.0:)。

要求に応じて追加データを提供する(:1に実行中のVNCがあります):

$ sudo netstat -lnp|grep -i vnc
tcp        0      0 0.0.0.0:5901            0.0.0.0:*               LISTEN      1685/Xtightvnc
tcp        0      0 0.0.0.0:6001            0.0.0.0:*               LISTEN      1685/Xtightvnc
unix  2      [ ACC ]     STREAM     LISTENING     11847    1685/Xtightvnc      /tmp/.X11-unix/X1

答え1

デフォルトでは、vnc はポート 5901 をディスプレイ 1 として使用します。したがって、netstatを使用してすべての受信プロセスを一覧表示し、そこからディスプレイを計算できます。

export DISPLAY="$(netstat -ln |
 awk '$4~/:59[0-9][0-9]$/{
  v=$4; sub(/.*:/,"",v);
  print ":" v-5900; exit}')"

netstat出力がフィールド4と同じであるとします0.0.0.0:5901。 awkは":"の前のすべてのエントリを削除し、ここから5900を引いています。 DISPLAY環境は次のFirefoxに設定されています。これをvncserverの開始と組み合わせるには、getdisplayなどの関数に入れて、次のように使用します。

getdisplay(){
  ... as above
}
getdisplay
if [ -z "$DISPLAY" ]
then    vncserver -name Computer
        getdisplay
fi
firefox ...

関連情報