シェルスクリプトの trap でシグナルを拾う場合の実行中コマンド
例えば、以下の様にして TERM を拾う様にしてみる。
#!/bin/bash -x trap "echo trap TERM; exit 1" TERM trap "echo EXIT" EXIT sleep 5 echo ok
以下は sleep 5
で待っている間に pkill -f trap-signal.sh
で TERM シグナルを送った時の結果。
$ ./trap-signal.sh + trap 'echo trap TERM; exit 1' TERM + trap 'echo EXIT' EXIT + sleep 5 ++ echo trap TERM trap TERM ++ exit 1 + echo EXIT EXIT
この時、 sleep 5
が完了するまでは待たされる。
シグナルを trap した時に、そのシェルスクリプト内で実行中のプロセスに対してシグナルを伝播させる簡単な方法は何だろう?