1.命令简介
trap 命令是 Shell 内建命令,用于指定在接收到信号后将要采取的动作。常见的用途是在脚本程序被中断时完成清理工作。
2.命令格式
trap[-lp][ARG][SIGSPECS]
3.选项说明
-l
列出信号名称与对应的数值
-p
列出信号与其绑定的命令列表
ARG
与指定信号绑定的命令。如果 ARG 为空字符串,表示忽略信号;如果 ARG 不指定(缺省)或为-,表示执行信号的默认动作
SIGSPECS
信号列表,可以是信号名称,也可以是信号对应的数值。可用信号可以使用trap-l查看
4.常用示例
(1)忽略 HUP、INT、QUIT、TSTP 信号。
trap""HUPINTQUITTSTP
(2)捕获 HUP、INT、QUIT、TSTP 信号,并执行默认动作。
trapHUPINTQUITTSTP
#或
trap-HUPINTQUITTSTP
(3)挂载 Shell 进程结束前需要执行的命令。格式为:trap “commands” EXIT。如脚本 exit.sh:
#!/bin/bash
echo"start"
trap"echo'end'"EXIT
echo"beforeexit"
exit0
执行 exit.sh 输出:
start
beforeexit
end
5.信号简介
信号是一种进程间通信机制,它给应用程序提供一种异步的软件中断,使应用程序有机会接受其他程序发送的命令(即信号)。应用程序收到信号后,有三种处理方式:忽略、默认或捕捉。进程收到一个信号后,会检查对该信号的处理机制。如果是 SIG_IGN,就忽略该信号;如果是 SIG_DFT,则会采用系统默认的处理动作,通常是终止进程或忽略该信号;如果给该信号指定了一个处理函数,则会中断当前进程正在执行的任务,转而去执行该信号的处理函数,返回后再继续执行被中断的任务。
在有些情况下,我们不希望自己的 Shell 脚本在运行时被中断,比如说我们写的 Shell 脚本设为某一用户登录系统后默认执行的 Shell 脚本,使这一用户进入系统后只能做某一项工作,如数据库备份, 我们不希望用户使用 Ctrl+C 发送 SIGINT 信号来中断当前 Shell 脚本的执行,进入到 Shell 交互模式,做我们不希望做的事情。这便用到了信号处理。
以下是一些你可能会遇到的,要在程序中使用的常见的信号:
(点击查看大图)
详细的信号列表,可以使用命令trap -l
或kill -l
查看,也可以查看头文件trap -l
,查看系统支持的所有信号如下:
1)SIGHUP2)SIGINT3)SIGQUIT4)SIGILL5)SIGTRAP
6)SIGABRT7)SIGBUS8)SIGFPE9)SIGKILL10)SIGUSR1
11)SIGSEGV12)SIGUSR213)SIGPIPE14)SIGALRM15)SIGTERM
16)SIGSTKFLT17)SIGCHLD18)SIGCONT19)SIGSTOP20)SIGTSTP
21)SIGTTIN22)SIGTTOU23)SIGURG24)SIGXCPU25)SIGXFSZ
26)SIGVTALRM27)SIGPROF28)SIGWINCH29)SIGIO30)SIGPWR
31)SIGSYS34)SIGRTMIN35)SIGRTMIN+136)SIGRTMIN+237)SIGRTMIN+3
38)SIGRTMIN+439)SIGRTMIN+540)SIGRTMIN+641)SIGRTMIN+742)SIGRTMIN+8
43)SIGRTMIN+944)SIGRTMIN+1045)SIGRTMIN+1146)SIGRTMIN+1247)SIGRTMIN+13
48)SIGRTMIN+1449)SIGRTMIN+1550)SIGRTMAX-1451)SIGRTMAX-1352)SIGRTMAX-12
53)SIGRTMAX-1154)SIGRTMAX-1055)SIGRTMAX-956)SIGRTMAX-857)SIGRTMAX-7
58)SIGRTMAX-659)SIGRTMAX-560)SIGRTMAX-461)SIGRTMAX-362)SIGRTMAX-2
63)SIGRTMAX-164)SIGRTMAX
参考文献
[1] trap manual
[2] Linux命令大全.trap命令
[3] linux中的trap命令
责任编辑:xj
原文标题:每天一个 Linux 命令(108):trap 命令
文章出处:【微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。
-
Linux
+关注
关注
87文章
11294浏览量
209344 -
命令
+关注
关注
5文章
683浏览量
22011
原文标题:每天一个 Linux 命令(108):trap 命令
文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论