
trap コマンドをシェルスクリプトに組み込むことで、 シグナル受信により実行途中で終了する場合も終了処理を指定することが可能になる。
※java等でのexceptionに近い処理ができる。
#!/bin/bash
# end process
trap 'echo "trapped."; rm -f $TMP_FILE; exit 1' 1 2 3 15
TMP_FILE="/root/test.sh.tmp"
if [ -e $TMP_FILE ]; then
echo "${TMP_FILE}があるため、処理を終了します。"
exit 0
fi
# create file
touch $TMP_FILE
sleep 10
rm -f $TMP_FILE
exit
これで、Ctrl+c Ctrl+\ Ctrl+c 強制終了時にも処理を行うことができる。
上記では、重複起動防止用のtmpファイルを強制終了時等にも削除するような処理をいれてある。
テストをしてみるとうまくいった。