shell——信号

1. 注册信号处理

#!/bin/bash

function CleanUp()
{
        echo "clean up"
}

trap CleanUp 2

sleep 10
echo "exit"

2. 定时器

#!/bin/bash

function StartTimer()
{
        # 如果没有指定,默认10s
        local INTERVAL=${1:-10}

        if [ $INTERVAL -gt 0 ]; then
                # 定时时间后向自己发信号
                sleep $INTERVAL && kill  -s 14  $$ &
                # 记住后台进程PID,如果用户需要,用于杀死后台进程
                TIMERPID=$!
        else
                echo "Error : interval must be positive "
                return 1
        fi
}

function UnsetTimer()
{
        # 杀死子进程
        kill $(pgrep -P $TIMERPID)
        # 杀死父进程
        kill $TIMERPID
}

function ExpireHandler()
{
        echo ""
        echo "Timeout, bye !"
        exit 14
}

# 若用户5秒没有输入,则停止等待
StartTimer 5
trap ExpireHandler 14

read -p "Please input your id : " id
# 取消定时器
UnsetTimer
echo "Your id is $id"

posted on 2022-03-24 11:30  开心种树  阅读(47)  评论(0编辑  收藏  举报