linux中的信号简介和trap命令

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

来源:https://blog.csdn.net/weixin_40543283/article/details/85561804

posted @ 2019-01-06 16:14  栖息地  阅读(673)  评论(0编辑  收藏  举报