vnc – linuxでvncsessionを殺す正しい方法は何ですか?

vnc vncserver

windows 7 のラップトップから VNC を経由して接続しているリモートの linux ボックスで以下のコマンドを実行すると、以下のようになります

 [subhrcho@slc04lyo ~]$ ps -ef|grep vnc
subhrcho 20113 19804  0 21:40 pts/8    00:00:00 grep vnc
subhrcho 27486     1  0 Jan28 ?        00:05:35 Xvnc :1 -desktop slc04lyo:1 (subhrcho) -httpd /usr/share/vnc/classes -auth /home/subhrcho/.Xauthority -geometry 1680x1050 -depth 16 -rfbwait 30000 -rfbauth /home/subhrcho/.vnc/passwd -rfbport 5901 -pn
subhrcho 27493     1  0 Jan28 ?        00:00:00 vncconfig -iconic

どうすればこのセッションをエレガントに終了させることができますか?kill -9 <pid>がそれを行うのは知っていますが、それは強制的なクリーンアップであり、ファイルが破損している可能性があると思います

追伸:私はまた、このソースからvncserverからkillオプションを使用するために読みましたが、display#を把握する方法を確認していません

  28  Geek  2013-02-11


ベストアンサー

お気づきのように、man vncserverから

  -kill :display#
This kills a VNC desktop previously started with vncserver. It does
this by killing the Xvnc process, whose process ID is stored in the
file "$HOME/.vnc/host:display#.pid". It actually ignores anything
preceding a ":" in its argument. This can be useful so you can write
"vncserver -kill $DISPLAY", for example at the end of your xstartup
file after a particular application exits.

ディスプレイ番号は、1つが手動でそれを設定していない場合は、ディスプレイのポート番号に接続されています(そして、異なる)、どこで

Display number = (Port number) ‒ 5900

この情報は man Xvnc (vncserver はこのツールを呼び出すラッパースクリプトに過ぎません) の中に記述されています

   -rfbport port
Specifies the TCP port on which Xvnc listens for connections from
viewers (the protocol used in VNC is called RFB - "remote
framebuffer").  The default is 5900 plus the display number.

暗記しても番号がわからない場合(でもどうせサーバーに接続するなら知っておく必要がある)は、例えばps ax | grep vncなどで確認してみるといいでしょう。ローカルでやってみると、プロセスが見えてくる

25697 ?        S     55:38 Xvnc4 :1 [...]
[...]
30481 ?        S     17:57 Xvnc4 :2 [...]

したがって、私は、それらがそれぞれ表示番号:1:2を持つVNCサーバを表していることを知っており、それによって殺すことができます

vncserver -kill :1
vncserver -kill :2

あなたの場合、psの出力に記載されているサーバの表示番号が:1であることがわかります

32  Daniel Andersson  2013-02-11


上記の回答を試してみましたが、私にはうまくいきませんでした。それは私にこの質問のようなエラーメッセージを与えました。VNCプロセスを手動で終了

なので、手動で kill しなければならなかった。kill -9を試してみたら、rdpでログインできなくなった。ログインしようとしたらxrdp_mm_process_login_response: login failedが出た

答えはここにありました。http://linuxtoolkit.blogspot.com/2013/03/xrdpmmprocessloginresponse-login-failed.html

基本的にXvncサーバが強制終了したときにクリーンアップされないセッションファイルがあります。そのファイルはディスプレイの名前がついているので、ディスプレイ:12なら/tmp/.X11-unix/X12です。kill -9の後にそのファイルを削除すれば元に戻ります

1  Mnebuerquo  2016-06-23


タイトルとURLをコピーしました