trap -l和kill -l都可以列出来信号所有值。

而trap "命令1;命令2;" 信号可以捕捉到信号之后再执行命令1、命令2等命令,这里的命令可以不止两条。
快捷键产生信号
echo "This is a test" > trapTest.txt将This is a test写入到trapTest.txt,按下Ctrl+c能够引发SIGINT信号,trap "cat trapTest.txt" SIGINT在捕捉到信号之后,输出^CThis is a test,^C是默认输入,一般按下Ctrl+c就会输出,This is a test是cat trapTest.txt输出结果。

trap "echo ' interrupt';ls -a" SIGINT会在按下Ctrl+c之后先输出^C interrupt,然后再输出ls -a执行的结果。

kill产生信号
killSignalInterrupt.sh先输出进程号,然后会捕捉到信号2,然后输出signal 2,而后边while语句是一个死循环,为了避免killSignalInterrupt.sh过快退出,不能捕捉到信号2。
#!/bin/bash
echo $$
trap "echo signal 2" SIGINT
while :
do
:
done
chmod u+rx killSignalInterrupt.sh给所属用户组添加上读和执行权限。

./killSignalInterrupt.sh &后台执行,还需要按一下回车键。

kill -信号 进程号可以向进程号发送信号,比如kill -2 27420。

kill -9 27420可以把进程27420终止。

需要注意的是,9号信号不能阻塞,也不能捕获。
killSignalKill.sh里边的内容如下:
#!/bin/bash
echo $$
trap "echo signal 9" SIGKILL
while :
do
:
done

./killSignalKill.sh &后台运行程序,kill -9 29259发现没有输入signal 9,而是直接把29259关闭了。

此文章为7月Day 31学习笔记,内容来源于极客时间《Linux 实战技能 100 讲》。













![[Docker实现测试部署CI/CD----相关服务器的安装配置(1)]](https://img-blog.csdnimg.cn/9e7ad5a161f04bde904fe539e623036b.png)




