trap 信号处理
shell可以向进程发送信号,trap可以为特定信号进行回调处理。
trap语法:
trap command SIGNAL1[ SIGNAL...]
trap指定的command可以为函数调用函数,多个trap处理相同信号会被后者覆盖。在捕获信号时等待shell处理完当前命令然后执行command。
常用的信号:
- SIGTERM
- SIGINT : 等价于ctrl+c。注意该信号只能中断前台进程,中断进程相关的子进程可以使用kill -15 -pid。
注意:
- trap无法处理19 SIGSTOP信号
示例:
#!/bin/bash
trap_func()
{
echo "inside trap func"
}
func2()
{
echo "inside func2"
}
# trap trap_func 19
echo "process start"
sleep 20
echo "process end"
trap trap_func SIGTERM SIGINT
#echo "sleep 1"
#sleep 200 &
#echo "sleep 2"
#sleep 200
#echo "finish"
补充: sleep 200 & 表示在后台运行。 pstree -p pid 可以查看进程的进程树
