こしごぇ(B)

旧:http://d.hatena.ne.jp/koshigoeb/

シェルスクリプトの 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 した時に、そのシェルスクリプト内で実行中のプロセスに対してシグナルを伝播させる簡単な方法は何だろう?