Linux trap命令

trap:是bash的内建命令,是对Linux系统信号的捕捉,首先介绍一下Linux 信号。

最常见的Linux系统信号

信号描述
1SIGHUP挂起进程
2SIGINT终止进程
3SIGQUIT停止进程
9SIGKILL无条件终止进程
15SIGTERM可能的话终止进程
17SIGSTOP无条件停止进程,但不终止进程
18SIGTSTP停止或暂停进程,但不终止进程
19SIGCONT继续运行停止的进程
更多的关于每一个信号的详细信息,可以参考 man number signal页面来查看,number就是信号值

bash shell允许用键盘上的键组合生成两种基本的Linux信号,终止进程(Ctrl+C)和暂停进程(Ctrl+Z)

用trap命令来对Linux系统的信号进行捕捉,可以通过查看man builtin页面来搜索trap的帮助文档

命令格式:trap [-lp] commands signals commands为命令,signals表示需要捕捉的信号,如果有多个信号,用空格隔开

参数说明

  • -l:列出所有系统信号名字和对应的数字
  • -p:打印出系统上与每一个信号相关的命令

例子

1. 打印出系统上所有的信号

[clef@rhel6164 ~]$ 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
2. 捕捉‘Ctrl+C'简单例子

[clef@rhel6164 test]$ cat trap.sh #捕捉到键盘输入'Ctrl+C'就会输出echo命令
#!/bin/bash

trap "echo 'Sorry! I have trapped Ctrl+C'" SIGINT SIGTERM

sleep 100

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值