web-dev-qa-db-ja.com

Solaris SMF:カスタムシグナルで強制終了するか、PIDを取得するか、子の強制終了を防止します

SolarisサービスXMLの場合

正常なシャットダウンを通知するためにkillを使用しています

<exec_method type="method" name="stop" exec=":kill" timeout_seconds="60" />

これは、SIGTERMの後でほとんど死ぬ子プロセスも強制終了するという事実を除いて、うまく機能します。これらのいずれかが機能します

  • exec="kill -SIGUSR1 $PID"を使用できるようにPIDを取得します
  • SIGTERMが子に送信されないようにします。 (または少なくとも孫ではない)
  • 他の信号を使用する

Pidを把握する必要のある別のスクリプトを設定したくありません。必要に応じてこれを行います。環境変数から取得するか、SMF組み込みコマンドを使用したいと思います。

2
Bryan Field

exec=":kill -USR1"がそのトリックを行います。 SIGなし。

method="refresh"を定義するときにこれを探していました。 jperkinはexec=":kill -HUP"の彼の例で私をまっすぐに設定しましたが、SmartOSではexec=":kill -SIGHUP"を使用すると"/sbin/sh[1]: exec: :kill: not found"になりました。

2
doublerebel

これは、親と子の両方が同じ契約を結んでいるためです(詳細は「男性契約」)。

「ctrun」(詳細については「manctrun」)を使用してください。これにより、異なるコントラクトの下で子プロセスが作成されます。これを行うと、親が殺されているときに子供が殺されるのを防ぐことができます。

0
Vikash Mehta

exec="kill -SIGUSR1"

0
Scott Smith