trap 信号说明,对照表,实例
# 1. 信号说明
信号组合键:
Ctrl+C # 组合键会产生SIGINT信号
Ctrl+Z # 产生SIGTSTP信号。
trap 说明:
trap命令允许你来指定shell脚本要监视并拦截的Linux信号。trap命令的格式为:trap commands signals。
# 1. 信号对照表; trap -l tarp [træp] 圈套
名称 默认动作 说明
SIGHUP 终止进程 终端线路挂断
SIGINT 终止进程 中断进程
SIGQUIT 建立CORE文件 终止进程,并且生成core文件
SIGILL 建立CORE文件 非法指令
SIGTRAP 建立CORE文件 跟踪自陷
SIGBUS 建立CORE文件 总线错误
SIGSEGV 建立CORE文件 段非法错误
SIGFPE 建立CORE文件 浮点异常
SIGIOT 建立CORE文件 执行I/O自陷
SIGKILL 终止进程 杀死进程
SIGPIPE 终止进程 向一个没有读进程的管道写数据
SIGALARM 终止进程 计时器到时
SIGTERM 终止进程 软件终止信号
SIGSTOP 停止进程 非终端来的停止信号
SIGTSTP 停止进程 终端来的停止信号
SIGCONT 忽略信号 继续执行一个停止的进程
SIGURG 忽略信号 I/O紧急信号
SIGIO 忽略信号 描述符上可以进行I/O
SIGCHLD 忽略信号 当子进程停止或退出时通知父进程
SIGTTOU 停止进程 后台进程写终端
SIGTTIN 停止进程 后台进程读终端
SIGXGPU 终止进程 CPU时限超时
SIGXFSZ 终止进程 文件长度过长
SIGWINCH 忽略信号 窗口大小发生变化
SIGPROF 终止进程 统计分布图用计时器到时
SIGUSR1 终止进程 用户定义信号1
SIGUSR2 终止进程 用户定义信号2
SIGVTALRM 终止进程 虚拟计时器到时
# 2. 实例
!/bin/bash
trap "
echo 'SIGINT信号代码对应:Ctrl-C 退出; trap 是接收命令,句末对应信号代码为:SIGINT,当输入这个信号时,返回指定规则; 此处为打印一句话 '
" SIGINT # 此次是再脚本运行中获取信号
echo "这是一个循环"
i=1 # 初始化变量,初始值为 1
for((i=1;i<=12;i++)) # 定义一个循环,属性为 i 进行约束。
do # 开始循环方法:
sleep 1 # 等待1秒钟 ,才执行下面的命令
echo "开始数数:" $i
done # 结束循环
echo "输入 Ctrl-C 信号,执行的命令已经变更,转交给下面的规则来执行"
trap "echo 'SIGINT 的信号值已被修改:打印命令已变更'" SIGINT
# 修改trap
a=1
while [ $a -le 5 ] # while 循环,变量 a 小于 5
do
echo "开始数数: $a"
sleep 1
a=$[ $a+ 1 ] # a 的值为它本身加 1
done
trap "echo '脚本结束后继续定义命令并执行,此处为打印一句话和时间命令' ; date" EXIT
# 脚本结束获取命令的参数 EXIT
echo "循环结束"