service vncserver restart コマンドが使えればよいが、これをすると、他の利用者にも迷惑をかけてしまう。
また、service vncserver startコマンドでは、既にプロセスは起動しているためエラーになる。
そこで、障害が生じている特定のVNC SERVERのプロセスを直接操作する必要がある。
■フリーズしているVNC SERVERのディスプレイ番号から、プロセス番号と動作させているユーザーを調べる
仮に、ディスプレイ番号4のVNC SERVERがダウンしたとする。
次のコマンドの結果からディスプレイ番号4に相当するXvnc:4を含む行を読むことで、
そのプロセス番号は3102、そのプロセスを動作させているユーザーはuser_Cだとわかる。
# ps -e -F | grep Xvnc
user_A 2509 1 0 22562 27248 0 06:30 ? 00:00:01 Xvnc :2 -desktop servername:2 (user_A) 略user_B 2928 1 0 22452 28812 0 06:30 ? 00:00:58 Xvnc :3 -desktop servername:3(user_B) 略user_C 3102 1 0 26528 45316 0 06:31 ? 00:01:52 Xvnc :4 -desktop servername:4(user_C) 略user_D 10739 1 3 21851 25180 0 10:52 ? 00:00:46 Xvnc :5 -desktop servername:5(user_D) 略root 11583 11174 0 22307 900 1 11:15 pts/0 00:00:00 grep Xvnc
■調べた情報から、そのVNC SERVERのプロセスを終了させ、そのユーザーで起動させる
# kill 3102 ←上で同定したプロセスを削除する
# su user_C ←user_Cになる
$ vncserver :4 ←vncserverコマンド名の後、スペース一個あけ、コロンに続けて元と同じディスプレイ番号を指定する
$ exit
#
(注意)
この方法では、/home/user/.vnc/内に、プロセスIDを記録したファイルは作成されない。