̃Gg[͂ĂȃubN}[Nɒlj

シェルスクリプト :: trap コマンド



シグナルと trap コマンド

シグナルとは、実行中のプロセスに対して、各種イベントを通知するために送出される合図(信号)です。
よく使用されるシグナルには、SIGTERM や SIGHUP、SIGKILL などがあります。
シグナルは全部で数十種類が存在します。

シグナルの一覧

% kill -l
HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 
PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU 
URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS

よく使うシグナル

名称意味
HUP1ハングアップ
INT2割り込み (Ctrl + C)
QUIT3プログラムの実行を中止
KILL9プログラムの強制終了
TERM15プログラムの終了

trap コマンド

trap コマンドは送出されたシグナルを捕捉し、あらかじめ指定されていた処理を実行するコマンドです。
下の例は、HUP INT QUIT TERM のいずれかのシグナルを捕捉した場合、一時ファイルを削除して終了します。
なお、終了ステータスは「1」を送ります。

% trap "rm -f /tmp/hoge.tmp.$$; exit 1" HUP INT QUIT TERM

以下のように値(番号)で指定しても良い。

% trap "rm -f /tmp/hoge.tmp.$$; exit 1" 1 2 3 15


※. 「強制終了のシグナル KILL 9 は trap することはできない」 のであえて記述しません。(リストに含めない)




programming/shell_script/command/trap.txt