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