Novell(クラウドコンピューティングのセキュリティ・仮想化ソリューションを実現)

ターミナルセッションを終了するとiManagerが停止する

This document (00007458) is provided subject to the disclaimer at the end of this document.

問題点

iManager 2.0.2 for Solarisで突然iManagerに接続できなくなりました。
その要因として、突然iManagerのTomcatのプロセスが意図せず停止しています。

解決方法

iManagerの起動スクリプト(/etc/ini.d/imgr)では、TomcatとApacheのプロセスをそれぞれ呼び出していますが、このスクリプトを実行した場合、Tomcatのプロセスは、スクリプトを実行したユーザがプロセスのオーナーとなり、プロセスの実行環境はスクリプトを実行したターミナル上となります。
つまり、ターミナルクライアント等を使用してリモートからサーバにアクセスし、そこでrootユーザにてiManagerのプロセスを起動した場合、Tomcatのプロセスはrootがプロセスのオーナーとなり、ターミナルに割り当てられた仮想コンソール上で実行されます。

# ps -ef | grep novell
nobody 21011 21009 0 13:59:29 ? 0:00 /var/opt/novell/httpd/bin/httpd -k start -DSSL
nobody 21012 21009 0 13:59:29 ? 0:00 /var/opt/novell/httpd/bin/httpd -k start -DSSL
root 21009 1 0 13:59:28 ? 0:01 /var/opt/novell/httpd/bin/httpd -k start -DSSL
nobody 21013 21009 0 13:59:29 ? 0:00 /var/opt/novell/httpd/bin/httpd -k start -DSSL
nobody 21014 21009 0 13:59:29 ? 0:00 /var/opt/novell/httpd/bin/httpd -k start -DSSL
nobody 21010 21009 0 13:59:29 ? 0:00 /var/opt/novell/httpd/bin/httpd -k start -DSSL
root 21005 1 0 13:59:27 pts/6 0:20 /opt/novell/jre/bin/java -Xmx256m -Djava.endorsed.dirs=/var/opt/novell/tomcat4/

この環境下で、ターミナルクライアントを閉じて仮想コンソールを終了させると、システム側ではrootユーザのセッションが終了したものと判断し、この仮想コンソール上で動作しているrootユーザがオーナーになっているプロセスも終了させます。

通常のサービス(デーモン)プロセスでは、実行オーナーがrootになっている場合は、ターミナルコンソールが割り当てられていない(psコマンドでは "?" で表示)か、もしくは実行オーナーがroot以外、もしくは特定のユーザに依存しないnobodyとして実行されています。
しかし、JavaおよびTomcatの標準的な動作では、前述の通り、実行したユーザがプロセスのオーナーとなり、実行環境はそのターミナル上になっています。

この動作により、ターミナルセッションを終了したタイミングでTomcatが終了し、iManagerに接続できなくなる問題が発生します。


回避策:
現状、Tomcat側の仕様との兼ね合いもあるため、モジュールでの修正などは予定されていません。
本現象については、以下のいずれかの設定変更にて回避してください。


方法A:
Tomcatのプロセスを実行するユーザを変更します。
Tomcatのプロセスのオーナーを変更し、rootユーザでの接続を終了させても、Tomcatが停止しないようにします。
iManagerの起動スクリプト(/etc/ini.d/imgr)内の、Tomcatの起動コマンドをログインしているユーザ(root)では無く、特定のユーザに依存しないnobodyアカウントで起動するように変更します。

変更内容:
1. iManagerを停止します。

2. /etc/init.d/imgrをエディタ(vi等)で開きます。

3. 以下のように変更します。

変更前: /var/opt/novell/tomcat4/bin/startup.sh
変更後: su - nobody -c "/var/opt/novell/tomcat4/bin/startup.sh"

4. Tomcat4が使用するファイルおよびディレクトリのオーナーを、rootからnobodyに変更します。

5. chown -R nobody /var/opt/novell/tomcat4/

6. iManagerを起動します。


方法B:
ターミナルクライアントを終了しても、Tomcatのプロセスは停止しないようにします。
nohupコマンドを利用することにより、Tomcatを起動したrootユーザのセッションが終了しても、Tomcatのプロセスは継続して動作するように設定します。
iManagerの起動スクリプト(/etc/ini.d/imgr)内の、Tomcatの起動コマンドをnohupコマンド経由で実行するようにします。

1. iManagerを停止します。

2. /etc/init.d/imgrをエディタ(vi等)で開きます。

3. 11行目を以下のように変更します。

変更前: /var/opt/novell/tomcat4/bin/startup.sh
変更後: nohup "/var/opt/novell/tomcat4/bin/startup.sh"

4. iManagerを起動します。


方法Aは、iManager 2.5以降のバージョンで使用されている起動方法です。
方法Bは、Tomcatを起動したユーザがログアウトした後もプロセスを動作させる方法となります。

Disclaimer

この情報は、米国Novell, Inc.およびノベル株式会社の内外から発生したものです。本文書の内容または本文書を使用した結果について、いかなる保証、表明または約束も行っていません。また、本文書の商品性、および特定目的への適合性について、いかなる黙示の保証も否認し、排除します。

本文書に記載されている会社名、製品名はそれぞれ各社の商品、商標または登録商標です。

  • ドキュメントID: J00007458
  • 作成年月日: 31-OCT-2007
  • 修正年月日:
  • ドキュメントリビジョン: 1
  • 分類: Server-Utilities
  • 対象NOVELL製品およびバージョン: iManager 2.0.2
  • カテゴリ: