Linux命令——trap

參考:Shell Scripting Tutorial Traphtml

          IPC——信號shell

簡介

trap是shell內置命令,它對硬件信號和其餘事件作出響應。trap定義並激活信號處理過程,信號處理過程是當shell接收信號或其餘特殊條件時要運行的處理過程。ubuntu

語法

trap [-lp] [[ARG] SIGNAL_SPEC...]ide

說明

trap定義並激活信號處理過程。 ARG是當shell接收信號SIGNAL_SPEC時要讀取和執行的命令。函數

若是ARG不存在(而且提供單個SIGNAL_SPEC)或ARG是破折號(「 - 」),則每一個指定的信號被重置爲其原始值。post

trap 1 2 表示在執行腳本時,對信號 1 2採起默認動做ui

若是ARG是空字符串,則shell將忽略每一個SIGNAL_SPEC及其調用的命令。url

trap '' 1 2 3 15 表示在執行腳本時忽略信號1 2 3 15 spa

若是忽略一個信號,全部子shell也會忽略該信號。可是,若是您指定在接收信號時要採起的操做,則全部子殼仍將在接收到該信號時採起默認操做。.net

若是SIGNAL_SPEC是EXIT(0),則在退出shell時執行ARG。

若是SIGNAL_SPEC是DEBUG,則在每一個簡單命令以前執行ARG。

若是SIGNAL_SPEC是RETURN,經過.或者內置命令source執行腳本或shell函數時,ARG都會執行。

若是SIGNAL_SPEC是ERR一種,當shell執行時指定-e參數(執行腳本時指定-e參數,一旦出錯就退出當前shell),每次出錯退出都會執行ARG。

選項

-l:打印信號名稱列表及其對應的數字。

root@ubuntu:~# 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    
View Code

stty -a能夠顯示觸發某些信號的鍵位。

root@ubuntu:~# stty -a
speed 38400 baud; rows 40; columns 96; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>;
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany
-imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
-flusho -extproc
View Code

-p:顯示與每一個SIGNAL_SPEC相關的trap處理命令

root@ubuntu:~# trap -p
trap -- '' SIGTSTP
trap -- '' SIGTTIN
trap -- '' SIGTTOU
View Code

trap 'rm -f /tmp/xyz$$; exit' ERR EXIT

設置一個trap,在shell錯誤 或 shell退出時刪除臨時文件xyz $$。

相關文章
相關標籤/搜索