Linux シェル,シグナル受信時にコマンドを実行する方法

スポンサーリンク

鍛錬 94

Linux シェルスクリプト,シグナル受信時にコマンドを実行する方法

シグナルを受信した際にコマンドを実行するには、trap を使用します。

関連記事:Linux,シグナルの一覧を表示(取得)する
関連記事:Linux シェル,シグナル受信時にシグナルを無視する方法
 
使用方法は、以下に示す通りです。

trap ‘コマンド’ シグナル番号
スポンサーリンク

シェルスクリプト

以下は、Ctrl+c を押下した際に発信される、シグナル2(SIGINT) を受信した場合に文字列を表示させるシェルスクリプト、recv_signal.sh です。

今回はシグナルを受信すると、コマンド echo を使用して文字列 receive signal を表示させています。

#!/bin/sh

trap 'echo "receive signal"' 2

while true
do
	echo "..."
	sleep 1s
done
スポンサーリンク

実行結果

以下は、シェルスクリプト recv_signal.sh を実行しています。

***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ./recv_signal.sh
...
...
...
^Creceive signal
...
...
...
...
...
^Creceive signal
...
...
^Creceive signal
...
...
^Creceive signal
...
^Creceive signal
...
^Creceive signal
...
...
...
^Creceive signal
...
...
...
^Z
[2]+  停止                  ./recv_signal.sh

 
上記に示した通り、Ctrl+c を押下して発生させたシグナル(SIGINT)をキャッチし、その都度コマンド echo で receive signal と表示させることができました。

タイトルとURLをコピーしました