いつ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 ...