いいねセンサースミス回答者BashのサブプロセスにSIGTERMを渡すしかし、私のスクリプトでは、SIGTERMが親bashインスタンスと私が実行している子インスタンスに転送されたsystemctl
ため、デュアルSIGTERMが発生しました。systemctl
その結果、私の子供が正常に終了する前にすぐに終了します。
BashスクリプトベースのサービスでSIGTERMを処理する正しい方法は何ですか?
答え1
だから私はこれで終わり、それに満足しています。
#!/bin/bash
script_term()
{
echo $0 SIGTERM
}
wait_for_child()
{
term_child_pid=$!
wait ${term_child_pid} 2>/dev/null
trap - TERM INT
wait ${term_child_pid} 2>/dev/null
}
trap 'script_term' TERM INT
node index.js
wait_for_child
親bashがSIGTERMを発行したときに子プロセスをSIGTERMするわけではありませんが、私が興味のあるすべての場合に正しく待ちます。