小编mis*_*uge的帖子

在处理SIGINT后阻止bash脚本终止

我正在为应用程序编写一个bash包装器.该包装器负责更改用户,运行软件和记录其输出.我也希望它传播SIGINT信号.

到目前为止,这是我的代码:

#!/bin/bash
set -e; set -u

function child_of {
    ps --ppid $1 -o "pid" --no-headers | head -n1
}

function handle_int {
    echo "Received SIGINT"
    kill -int $(child_of $SU_PID)
}

su myuser -p -c "bash /opt/loop.sh 2>&1 | tee -i >(logger -t mytag)" &
SU_PID=$!

trap "handle_int" SIGINT

wait $SU_PID
echo "This is the end."
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我向这个包装器发送一个SIGINT时,handle_int会被调用但是脚本结束了,而我希望它继续等待$SU_PID.

有没有办法捕获int信号,做一些事情,然后阻止脚本终止?

linux bash signals bash-trap

5
推荐指数
1
解决办法
1416
查看次数

标签 统计

bash ×1

bash-trap ×1

linux ×1

signals ×1