4
我正在为应用程序编写bash包装。这个包装器负责更改用户,运行软件并记录其输出。 我也希望它传播SIGINT信号。防止在处理SIGINT后终止bash脚本
这是到目前为止我的代码:
#!/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."
我的问题是,当我送一个SIGINT给这个包装,handle_int
被调用但随后的脚本已经结束了,而我希望它继续等待$SU_PID
。
有没有办法捕捉int信号,做一些事情,然后阻止脚本终止?
如果我明白你的问题:接收后'SIGINT'你希望你的包裹脚本要等到你'su'命令退出之前死亡? – rkyser
@rkyser是的,这正是我想要的。 – mistyrouge