ターミナルセッションを終了すると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
- カテゴリ: