vine-users ML アーカイブ



[vine-users:073418] VNC Server を crond で監視して起動するように すると問題点有り

  • From: black <black@xxxxxxxxxxxxxxx>
  • Subject: [vine-users:073418] VNC Server を crond で監視して起動するように すると問題点有り
  • Date: Thu, 03 Nov 2005 16:52:55 +0900
こんにちは、クロと申します。早速ですが質問です。

現在、Vine Linux 3.2 にて VCN Serverを常時起動させるように
しております。

VNC Server の稼動状態をシェルスクリプトでチェックし、
そのシェルスクリプトを crontab に追記して crond で常時監視
しております。(15分毎程度の間隔でチェック)

VNC Server が異常終了した時に、起動するように設定しているのですが、
ここで問題がありまして、crond から起動した場合、VNC Viewer から
接続するとGNOMEが英語環境で起動してしまいます。(全メニューが英語)
日本語環境で起動できるようにするには、どういう設定が必要なのでしょうか?


■ 現在設定してある事

1) /etc/rc.d/init.d/vncserver は runlevel 3,5 で on
2) /etc/sysconfig/vncservers には VNCSERVERS="1:username" で設定
3) 上記ユーザのホームでは ~/.vnc/xstartup があり gnome で
   デスクトップ環境が起動するようにしてあります。
   (/etc/X11/xinit/xinitrc を xstartup としてコピー)
4) 簡単なスクリプトで VNC Server の状態をチェック。(check.sh)
   ps で Xvnc のPIDを見てみて、あれば稼動状態、なければ停止状態
   PIDがたってなくて、/tmp/.X1-lock や /tmp/.X11-unix/X1 が
   残ったままであれば異常終了と判断して、VNC Server を起動させる
   という10数行のスクリプトです。(/usr/local/bin 以下に置きました。)
5) 上記スクリプトを /etc/crontab にて 15分毎で監視するようにしました。
   */15 * * * * username /usr/local/bin/check.sh としてユーザで
   スクリプトを稼動させるように追記。
6) ブラウザからCGI(Perlスクリプト)でも vncserver を起動/停止
   させられるように、スクリプトを書いてあります。


■ 現在わかっている事、試してみた事

1) マシン自体を再起動させた場合、VNC Server も正常に起動しており
   VNC Viewer から接続しても日本語環境化の GNOME が起動します。
2) コンソールから /etc/rd.d/init.d/vncserver を 直接 restart/start
   しても問題なく日本語環境下の GNOME が起動します。
3) コンソールから check.sh を実行しても問題なくVNC Viewerで
   日本語環境化の GNOME が起動します。
4) CGI 及び crond で起動した場合のみ英語環境化の GNOME が起動します。
5) crond での check.sh の実行は user でも root でも結果は同じでした。


■ 疑問

CGIで動かしているスクリプトは suexec が有効なのでユーザ権限
で動いているはずですから、VNC Server はどのユーザが起動しているか
か判断できるのでは?さらにそのユーザホームには .vnc/xstartup もあるので、
なぜ GNOME が起動できるのに、日本語環境下にならないか?
/usr/bin/vncserver 自体は改変してないので、もし別の(新規)ユーザで起動
したというのなら、twm で起動するのではないのでしょうか?
crond でも ユーザで監視スクリプトを動かしているので、上記と同じ疑問です。



長文失礼致しました。御助言お願い致します。