VNCサーバーが落ちても自動で復活させる方法(cygwin+cron版)
2011-02-15
Windowsでタスクを使った方法を前回解説しましたが、Linux風にcronを使った方法も紹介しておきましょう。
Cygwinのインストール
Cygwinのサイトから最新版をダウンロードしてインストールします。 インストール先はデフォルトの「C:cygwin」です。 その際に、パッケージの追加で以下のパッケージにチェックを入れて追加インストールしておきます。
- openssh (Netカテゴリ)
- cron (Adminカテゴリ) データベースのスケジュールバックアップ用に利用します。
- cygrunsrv (Adminカテゴリ:標準でインストールされます) cronを実行させるために利用します。
- vim (Editorsカテゴリ) cron設定ファイルの書き換えに利用します。
パッケージがインストールされたかチェック
インストールが完了したらCygwinを起動して以下のコマンドを入力し、パッケージがインストールされたかどうかをチェックします。
$ cygcheck -cd openssh cron cygrunsrv vim Cygwin Package Information Package Version cron 4.1-6 cygrunsrv 1.34-1 openssh 5.0p1-1 vim 7.1-1
cronをWindowsのサービスに登録
次にcygrunsrv (NT/W2K service initiator) コマンドを使用して、cron をサービスに登録します。
$ cygrunsrv --install cron --path /usr/sbin/cron --args -D
[設定]-[コントロールパネル]-[管理ツール]-[サービス] から、cron がサービスに登録されたことを確認します 。
cronサービスの開始
cronサービスを開始します。
$ cygrunsrv --start cron
cronが起動したことを確認します。
$ ps -ef | grep cron SYSTEM 4908 4472 ? 17:25:33 /usr/sbin/cron
止めたい・削除したいときは?
cygrunsrv でサービスを登録すると default では OS 起動時にサービスも自動起動します。
手動起動に切り替えるには一度サービスを抹消し、手動起動を指定してもう一度インストールします。
$ cygrunsrv --stop cron $ cygrunsrv --remove cron $ cygrunsrv --install cron --path /usr/sbin/cron --args -D --type manual
VNCを起動させるシェルスクリプトを作成
VNCのサービス(VNC Server)は前回の記事でインストールされていると思いますので、VNC Server サービスを起動するためのシェルスクリプト(vnc_launcher.sh)を「/usr/local/bin」に作成します。
$ vi /usr/local/bin/vnc_launcher.sh
vnc_launcher.sh
#!/bin/sh net start "VNC Server"
作成できたら、実行権限を与えます。
$ chmod 755 /usr/local/bin/vnc_launcher.sh
crontabへの登録
最後に作成したシェルスクリプトをcrontabに登録しましょう。
$ crontab -e
viエディタが起動するのでスケジュールを記述します。 今回は1分おきに起動チェックするようにしましょう。
* * * * * /usr/local/bin/vnc_launcher.sh
書けたらcrontabを保存して終了させます。
(コマンドモードで) :wq (Enter)
これで登録が完了しました。 登録できたかどうかは以下のコマンドで確認します。
$ crontab -l
2011-02-15