linux捕捉程序退出信号,linux trap脚本信号捕获命令的使用

原标题:linux trap脚本信号捕获命令的使用

linux的信号,可以用于进程间通信,还可以用于系统向进程发送命令。比如当系统关机的时候,需要通知每一个进程做善后工作,系统会对每个进程发送SIGTERM信号。进程在收到信号之后就会做一些清理动作。你也可以手动发送一些信号,比如“Ctrl+C”会像指定的进程发送SIGINT信号,如果进程没有指定捕获信号动作,那就默认的动作就是挂掉。linux系统信号非常多,常见的信号有:

信号值信号名描述

1SIGHP 挂起进程

2SIGINT 终止进程

3SIGQUIT 停止进程

9SIGKILL 无条件终止进程

15SIGTERM 尽可能终止进程

17SIGSTOP 停止进程,不是终止进程

18SIGTSTP 停止或暂停进程,但不终止进程

19SIGCONT 继续运行停止的进程

在一个进程中,捕获信号需要用到注册信号函数signal,那么在一个shell脚本中如何去捕获信号,并处理信号呢?需要使用到linux提供的命令trap,trap的用法:

trap cmd sigVALUE

trap 动作要捕获的信号

例如:trap “echo ‘I got signal INT’ ” SIGINT

在默认的情况下,对shell脚本发送Ctrl+C会导致脚本的退出,如果加上捕获命令,则直接捕获并做相应处理,处理动作是由你来指定的。

接下来我们写几个例子来演示如何使用。

例1:捕获信号并处理

linux捕捉程序退出信号,linux trap脚本信号捕获命令的使用_第1张图片

结果如下所示:

linux捕捉程序退出信号,linux trap脚本信号捕获命令的使用_第2张图片

例2: 还可以捕获 shell退出的消息

trap comand EXIT

linux捕捉程序退出信号,linux trap脚本信号捕获命令的使用_第3张图片

结果如下:

责任编辑:

你可能感兴趣的:(linux捕捉程序退出信号)