trap命令的用法

 在有些情况下,我们不希望自己的shell脚本在运行时刻被中断,比如说我们写得shell脚本设为某一用户的默认shell,使这一用户进入系统后只能作某一项工作,如数据库备份, 我们可不希望用户使用ctrl+C之类便进入到shell状态,做我们不希望做的事情。这便用到了信号处理。 

kill -l可以列出系统的信号名称,如下: 
-bash-3.00# kill -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   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 
-bash-3.00# 
通常我们需要忽略的信号有四个,即:HUP, INT, QUIT, TSTP,也就是信号1, 2, 3, 24使用这样的语句可以使这些中断信号被忽略: 
trap "" 1 2 3 24 或 trap "" HUP INT QUIT TSTP 
用 trap :1 2 3 24 或 trap HUP INT QUIT TSTP使其回复默认值。用stty -a可以列出中断信号与键盘的对应,分别执行上面的命令后,运行 tail -f /etc/passwd, 然后尝试用键盘中断,试试两种情况(默认和忽略)下有何不同。更方便的是我们可以用在shell中用trap定义我们自己的信号处理程序,就象在c中用signal一样, 

如:trap “echo 'GO Away'” INT 

 

它有三种形式分别对应三种不同的信号回应方式.
第一种:
 trap "commands" signal-list
当脚本收到signal-list清单内列出的信号时,trap命令执行双引号中的命令.

第二种:
 trap signal-list     
trap不指定任何命令,接受信号的默认操作.默认操作是结束进程的运行.

第三种:
 trap " " signal-list
trap命令指定一个空命令串,允许忽视信号. 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值