1.信号
linux通过信号来在运行在系统上的进程之间通信,也可以通过信号来控制shell脚本的运行
主要有一下信号
1 ##进程重新加载配置
2 ##删除进程在内存中的数据
3 ##删除鼠标在内存中的数据
9 ##强行结束单个进程(不能被阻塞)
15 ##正常关闭进程 (可能被阻塞)
18 ##运行暂停的进程
19 ##暂停某个进程 (不能被阻塞)
20 ##把进程号打入后台
man 7 signal ##查看信号详细信息
1)捕捉信号:trap命令
#常用信号 ctrl+c(终止进程) ctrl+z(暂停进程)
如上图,信号2与ctrl+c的作用时一样的
stty -a ##列出中断信号与键盘的关系
trap "" 2 ##信号屏蔽,此时按ctrl+c就不会有作用
trap : 2 ##恢复信号
2)捕捉脚本的退出
#!/bin/bash
trap "echo 'Sorry!I have trapped Ctrl+C'" 2
echo "This is a test script~"
count=1
while [ $count -le 10 ]
do
echo "Loop #$count"
sleep 1
count=$[ $count + 1 ]
done
echo "This is the end of the script~"
trap - 2
echo "I just removed the trap"
如上图,当我运行这个脚本的时候,ctrl+c是被trap住的,当脚本运行结束后,ctrl+c就被释放了
3)一个脚本
运行这个脚本会不停的新建以westos+时间组成的文件,当使用ctrl+c命令时,会自动删除所有新建的文件
#!/bin/bash
trap "find /tmp -type f -name "westos_*" | xargs rm -f && exit " 2
while true
do
touch /tmp/westos_$(date +%F-%N-%M-%S)
sleep 2
ls -l /tmp/westos*
done
相关学习交流群:864588072