1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Bash】trapコマンドの使い方

Posted at

trapコマンドとは

trapコマンドはシグナルを受け取った際の動作を設定するコマンドです。

以下のように記述します。

trap 'コマンド' シグナル

上記の「シグナル」にはシグナル名またはシグナル番号を記述します。

シグナル

使用できるシグナルの一覧はtrap -lを実行することで確認できます。

$ trap -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX
シグナル名 シグナル番号 説明
SIGHUP 1 制御端末を切断するか、制御プロセスを終了
SIGINT 2 ユーザーがCtrl + C(割り込みシグナル)を入力
SIGQUIT 3 ユーザーがCtrl + \(終了シグナル)を入力
SIGTERM 15 終了シグナル。`kill)コマンドのデフォルトシグナル
EXIT 0 シェルの終了時

設定されているコマンドの確認

現在設定されているコマンドを確認するにはtrap -pを実行します。

$ trap 'echo trap-exit' EXIT 
$ trap 'echo trap-sigint-sigquit' SIGINT 3
$ trap -p
trap -- 'echo trap-exit' EXIT
trap -- 'echo trap-sigint-sigquit' SIGINT
trap -- 'echo trap-sigint-sigquit' SIGQUIT

trap -p シグナルとすることで特定のシグナルの設定を確認できます。

$ trap -p EXIT
trap -- 'echo trap-exit' EXIT

設定の上書き

同じシグナルに対して複数回設定すると上書きされます。

$ trap 'echo trap-exit' EXIT
$ trap 'echo trap-sample' EXIT
$ trap -p EXIT
trap -- 'echo trap-sample' EXIT

また設定をリセットする場合にはコマンド部分を記述せずに実行します。

$ trap EXIT
$ trap -p EXIT
<!-- 何も出力されない -->
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?