web-dev-qa-db-ja.com

子が死亡したため、SolarisSMFがサービスを強制終了する

Solaris10でサービスを管理するためにSMFを使用しています。

このサービスはそれ自体がプロセスマネージャーであり、多くの子プロセスをフォークします。その一部はときどき停止します(またはさまざまな理由で強制終了されます)。ただし、サービスプロセス自体は非常に堅牢であり、死ぬことはありません。

私が抱えている問題は、KILLシグナルを使用してこれらの子プロセスの1つを手動で強制終了すると、SMFがメインサービスを再起動することです。

[ Aug 27 08:07:06 Stopping because process received fatal signal from outside the service. ]

サービスサブプロセスの1つが強制終了された場合に、SMFがnotサービスを強制終了するようにSMFまたはサービスマニフェストを構成する方法はありますか?

TIA

6
aaa90210

マニフェストに以下を設定する必要があります。

<property_group name='startd' type='framework'>
    <!-- sub-process core dumps shouldn't restart session -->
    <propval name='ignore_error' type='astring' value='core,signal' />
</property_group>

または、次の方法でオンザフライで実行できます。

svccfg -s svc:/your/service:default
svccfg> setprop startd/ignore_error = astring:"core,signal"
svccfg> ^D
5
Martin

私はちょうど今同じ問題を抱えていて、_/usr/sbin/ctrun -l child <command-and-arguments>_に包まれた子を開始するようにサービスプロセス自体を変更することでそれを解決することができました。マニフェスト自体は「子」サービスモデルを使用します。

詳細については、contract(4)およびctrun(1)を参照してください。

3
ankon

オンザフライメソッドを試してそのようなプロパティグループは開始されていません 'を取得する場合は、最初にプロパティを追加する必要があります。

svccfg -s svc:/your/service:default
svccfg> addpg startd framework
svccfg> setprop startd/ignore_error = astring:"core,signal"
svccfg> ^D
1
Latch M