VNCサーバーが落ちても自動で復活させる方法
2011-02-09
遠隔地のPCをどこからでもリモート操作できるようにするVNCサーバーは非常に便利なアプリですが、ファイル転送などで負荷がかかり、落ちてしまうこともよくあるのが利用者として最大の問題でした。
そこで、VNCサーバーが落ちていても定期的にチェックしてゾンビのように立ち上げることができれば最強じゃないか!ということでやってみたところ、うまくいったのでお伝えしようと思います。
概要
手順を簡単に紹介しますと、Windowsのシステムサービスとして登録されたVNCサーバー(WinVNC)を起動させるバッチファイルを作成し、そのバッチファイルをWindowsのタスクスケジューラで1分おきくらいにバックグラウンドで実行させる、というものです。
分かる人にはこれだけで理解してもらえるかもしれませんね。
あるいは、LinuxやMacOSXのようにcronを使ってスケジューリングする方法もあります。 sygwinとcronを使ったスケジューリングの方法はこちら。
今回はUltra VNCで実験
まず、VNCサーバー/クライアントソフトですが「Ultra VNC」を使ってみましょう。 Ultra VNCには「WinVNC」をサービスとしてインストールして、次回から自動で起動させることができるようになっています。 これをまずインストールしておきます。
起動用のバッチスクリプトファイルを作成
次に、このVNCサービスを起動させるためのスクリプトを作成します。 メモ帳でもTeraPadでも秀丸でもなんでもいいので、次の記述を書いて「vnc_launcher.bat」というファイル名で適当な場所に保存しましょう。
今回はCドライブ直下に保存してみました。
net start "VNC Server"
WinVNCサービスをインストールすると、サービス上では「VNC Server」というサービス名になります。
スクリプトをバックグラウンドで実行させる
通常、バッチスクリプトを実行すると、MS-DOSプロンプト画面が表示されますが、定期的に実行されるスクリプトにおいてこれが表示されてしまうと、うっとおしくて堪りません。
そこで、「vnc_launcher.bat」ファイルのショートカットを作成して対処しましょう。 ショートカットを作成してプロパティを見ると、「ショートカット」タブに「実行時の大きさ」という欄があり「最小化」を選択することができます。
ショートカットファイル名は「vnc_launcher_lnk」としておきます。
「タスク」でスケジュールを作成
さて、ではいよいよタスクスケジュールに組み込みます。 Windowsでは定期的に実行するような作業を「アクセサリ」→「システムツール」→「タスク」で追加することができます。
新規タスクを作成
まず、「ファイル」メニューから「新規」→「タスク」を選択して、新規タスクを作成しましょう。 名前も決められるので「vnc_launcher」としておきます。
実行ファイルを指定
ダブルクリックすると、詳細を設定するための画面になりますので、まず実行させるプログラムで先ほど作成したショートカットファイルを指定します。
ただし、注意していただきたいのが、普通に「参照…」ボタンからショートカットファイルを登録すると、バッチファイル本体の方が登録されてしまうので、ここはて入力で「C:vnc_launcher_lnk.lnk」としてあげる必要があります。 ショートカットファイルではファイル名に現れない「.lnk」を意図的に付加してあげる必要があるので、注意してくださいね。
また、実行時にアカウントを指定しなくても済むように「ログオンしている場合にのみ実行する」というチェックボックスにもチェックを入れておいてください。
1分おきにチェックできるようにスケジュール設定
最後に、定期的に実行されるように時間を設定します。 「スケジュール」タブの「詳細」ボタンを押して「スケジュール オプション」ウィンドウを表示させ、「終了日」のチェックをオフ、「タスクを繰り返し実行」にチェックを入れ、間隔を1分おき(このあたりは好きに設定してください)、終了時間を「継続期間」にし、24時間にします。
「設定」タブでバッテリー駆動時の設定
あとは「設定」タブでバッテリー駆動時の動作設定ができますが、サーバーとして動かす場合は大抵関係ないので、みなさんの環境に合わせて設定してみてください。 私の場合は次のように設定してみました。
設定完了! そして実行へ…
お疲れさまでした! これで完了です。 1分おきにタスクが実行され、VNCサーバーが停止していれば自動的に起動するようになります。
VNC Server が実行されているかどうかは、「コントロールパネル」の「管理ツール」で「サービス」を起動し、「VNC Server」のプロパティを見ると確認できますよ。
2011-02-09