AIX サービスの状況を可視化する際に問題があります。まず、実行するシェルスクリプトを指すサブシステムを作成します。
mkssys -s testService -p /etc/rc.d/init.d/runScriptWithCatalina.sh -u 0
サービスをで起動すると、サブ
startsrc -s testService -a "start"
システムが開始されたとマークされます。
0513-059 The testService Subsystem has been started. Subsystem PID is 9502912.
そしてサービスは本当に効果があります。ただし、でサブシステムの状態を確認すると、機能しないとマークされ
lssrc -a
ます。その理由は、サブシステムの起動時にcatalina.shスクリプトの起動を呼び出すrunScriptWithCatalina.shを呼び出し、catalina.shが分岐して新しいプロセスを作成し、サブシステムがそれを検出できないために機能しないというメッセージが表示されることです。です。 。 Catalinaスクリプトは次のとおりです。https://github.com/magro/msm-sample-webapp/blob/master/runtime/apache-tomcat-6.0.32/bin/catalina.sh。 tomcad.pidファイルには、表示されているサブシステムPID 9502912とは異なるpidが含まれています。
解決策や回避策がありますか、それとも別の方法がありますか?
答え1
システムリソースコントローラはい関連する限り、正しい状態を表示します。開始されたPIDが終了しました。 SRCに期待状態を表示させるための最善のアドバイスは、exec
スクリプトチェーン内の各後続のスクリプトが、最終的なJavaプロセスが初期スクリプトと同じPIDを占有するようにすることです。
単純化された例:
ファイル:runScriptWithCatalina.sh
# ...
exec /path/to/catalina.sh
ファイル:/path/to/catalina.sh
# ...
exec java ...
答え2
catalina.sh
Systemdホラーの家で今日のsystemdで動作することは、すでにIBM System Resource Controllerでも機能します。30年。私は実際に人々にSRCで実行されるデーモンを書く適切な方法を知らせる一般的な答えの1つでIBM Redbookを参照しました。1995年に。
catalina.sh
Bodge Poor Man's Dæmon SupervisorとBad Loggerの使用は正しいアプローチではありません。
catalina.sh
に包まれてその他スクリプトは明らかにこれは正しいアプローチではありません。そのrc
スクリプトを使用しないでください。https://unix.stackexchange.com/a/563486/5132。
最良の方法はそれを削除することですcatalina.sh
。 「Poor Man's Dæmon Supervisor」および「Bad Logger」項目、またはAIXとまったく関係のないすべての項目を削除すると、一部の環境変数を設定してからコマンドを実行する以上の機能を実行しないことがわかりますjava
。自分でやることができ、多くの人がする自分でください。
やや劣った方法はrun
for動詞を使うことですcatalina.sh
。
追加読書
- ジョナサン・ドボイン・ポラード(2001)。 Unixデーモンを設計する際に避けるべき間違い。一般的な答え。
- ジョナサンデボインポラード(2015)。無意味な追加レイヤーでApache Tomcatをラップする 体系化された恐怖の家。
- systemdを使用したJavaデーモンの構成
- https://unix.stackexchange.com/a/437461/5132
- https://unix.stackexchange.com/a/476608/5132