shinke1987.net
雑多な備忘録等のはず。
他のカテゴリ・タブ
目次
PR

trapの動作確認

2025-05-27 2025-05-27

環境

macOS:15.5

RockyLinux9.5でも動作確認済み。

前提

Dockerコンテナ起動時に実行するスクリプトで、SIGTERMに対応しないと停止時に約10秒待たされる。

コンテナを何度も起動・終了することを考えるとSIGTERMに対応した方が良いので、そのためにtrapの動作確認を行う。

コード (test.sh)

#!/bin/bash

cleanup() {
	echo "cleanup start"
	echo "signal = $1"
	exit 0
}

for i in EXIT HUP INT QUIT PIPE TERM
	do
		trap "cleanup $i" "$i"

	done

count=0
while true
	do
		count=`expr $count + 1`
		echo -n "count = $count : "

		if [ $count -eq 5 ]
			then
			echo "break"
			break
		fi

		sleep 1

		echo "sleeped"
	done

動作確認

上記スクリプトを次のコマンドで実行し、終了するまでの間にCtrl + Cで強制終了すると動きがわかるはず。

(bashコマンドで実行すると新たにシェルを起動するのでプロセスも新たに作られるが、
sourceコマンドで実行すると実行中のシェルから起動されることは覚えておいた方が良い。)

bash test.sh

実行結果の例は次の通り。

count = 1 : sleeped
count = 2 : ^Ccleanup start
signal = INT
cleanup start
signal = EXIT
同一カテゴリの記事