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 $$。

相关文章
相关标签/搜索