killコマンドやCtrl+Cによるシグナルを受ける方法を記します。
以下に記すシグナルを対象にスクリプトを記述してみます。
| ハングアップ | HUP | 1 |
| 割り込み(CTRL+C) | INT | 2 |
| 終了 | QUIT | 3 |
| 強制終了 | TERM | 15 |
シグナルの一覧を確認したい場合は、逆引きUNIXコマンド/killコマンドのシグナル名称と値を知りたいを参照してください。
#!/bin/bash trap "echo SIGNAL HUP; exit 1" 1 trap "echo SIGNAL INT; exit 1" 2 trap "echo SIGNAL QUIT; exit 1" 3 trap "echo SIGNAL TERM; exit 1" 15 while : do sleep 1 done
他の端末よりkillコマンドにてプロセスを強制終了(TERM)させてみた結果です。
下記の通り、SIGNAL TERMが表示されています。
以下のように複数のシグナルを指定することもできます。
trap "echo SIGNAL; exit 1" 1 2 3 15
シグナルを受けた後、後処理をしたい場合は、以下のようにfunctionをつくればよいでしょう。
#!/bin/bash
trap "HUP; exit 1" 1
trap "INT; exit 1" 2
trap "QUIT; exit 1" 3
trap "TERM; exit 1" 15
function HUP {
echo "function HUP"
}
function INT {
echo "function INT"
}
function QUIT {
echo "function QUIT"
}
function TERM {
echo "function TERM"
}
while :
do
sleep 1
done