我有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送往子壳及其所有孩子。在谷歌搜索一段时间后(存在一个棘手的问题处理信号),我选择setsid
创建一个新的会话并发送使用的信号-pid
。但是,尽管pid
是正确的,但不会打印该消息。如果我手动执行kill -15 -$pid
,则可以工作。那么如何将信号发送到子壳?
终于,我设法通过创建另一个子壳来完成此工作,然后在该子壳中调用kill -15 -$pid
。仍然不知道为什么父壳不能这样做