如果我优雅地杀死(没有-9
)一个运行另一个脚本的脚本,它依次运行java,java进程会通过级联接收kill信号吗?
答案 0 :(得分:1)
在这种情况下,我看到java没有正确关闭,并且由init(pid 1)拥有。我在过去通过在启动后记录java进程的pid,然后在bash脚本内的信号处理程序中发送kill -15来解决这个问题。
jpid=
trap_intr()
{
[ ! -z "$jpid" ] && kill $jpid
}
trap trap_intr INT TERM
java -cp ... foo &
jpid=$!
wait
更新:我忘记将java进程放在后台,让bash脚本等待$!