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/bashtrap "echo 'Sorry!I have trapped Ctrl+C'" 2echo "This is a test script~"count=1while [ $count -le 10 ]do echo "Loop #$count" sleep 1 count=$[ $count + 1 ]doneecho "This is the end of the script~"trap - 2echo "I just removed the trap"
如上图,当我运行这个脚本的时候,ctrl+c是被trap住的,当脚本运行结束后,ctrl+c就被释放了
3)一个脚本
运行这个脚本会不停的新建以westos+时间组成的文件,当使用ctrl+c命令时,会自动删除所有新建的文件
#!/bin/bashtrap "find /tmp -type f -name "westos_*" | xargs rm -f && exit " 2while truedo touch /tmp/westos_$(date +%F-%N-%M-%S) sleep 2 ls -l /tmp/westos*done
来源: