基本的に、bash スクリプト プロセスが を受け取ったときに、SIGINT
終了する前にすべてのサブプロセスを強制終了する必要があります。私はhereを読んで、次の行に沿って何かを使用しました:
trap "kill -TERM -$$ ; exit 1" INT QUIT
私も使用するために読んだkill 0
:
trap "kill -TERM 0 ; exit 1" INT QUIT
それらの違いは何ですか? また、次の要件を満たしていますか (そうでない場合は何をしますか?)。
- それ自体とその子のみを強制終了します (端末コマンドによって開始された最上位プロセスであると仮定します)。
- 同じシェルスクリプトの他のプロセスやインスタンスを強制終了することはありません (別の端末コマンドから実行します。つまり、実行中
./foo.sh &
に./foo.sh
2 番目のプロセスを強制終了しても、同じ tty 内であっても最初のプロセスは強制終了されません)。