我有2个shell脚本:
# subshell.sh
trap "echo Caught SIGTERM" 15
echo $$
sleep 100000
# parent.sh
setsid sh subshell.sh &
pid=$!
echo "sid=$pid"
sleep 2
# This won't work!
kill -15 -$pid
主要目的是将SIGTERM发送到subshell及其所有子节点。谷歌搜索了一段时间后(bash处理信号的方法有一个棘手的问题),我选择setsid
创建一个新会话并发送使用-pid
的信号。但是,尽管pid
正确,但不会打印该消息。如果我手动执行kill -15 -$pid
,这可以工作。那么如何将信号发送到子shell?
答案 0 :(得分:0)
最后,我设法通过创建另一个子shell ...来完成这项工作,然后在子shell中调用kill -15 -$pid
。还是不知道为什么父shell不能这样做