【发布时间】:2019-06-13 20:54:17
【问题描述】:
script_sample.sh
#!/bin/bash
for sig in 13 15 18; do
trap "kill -9 -$$;" $sig
done
hive -f hivescript.hql &
PID=$!
while [ `ps ${PID} | wc -l` -gt 1 ]
do
echo waiting
sleep 5
done
有一个实用程序会调用这个 sample_script.sh,当我通过这个实用程序中断脚本的执行时,脚本会收到 SIGNAL 13 (SIGPIPE)。
在接收到信号时,hive 进程被终止,因为它与 sample_script.sh 位于相同的进程组 ID。但是脚本会随着 sleep 命令继续运行。
testuser 36223 1 0 13:13 ?
<sleep also runs> as child of 36223
我还注意到,有时 hive 进程也没有被杀死,但行为是随机的。
- 为什么 kill -9 -PGID 不会杀死脚本本身。 -- 总是发生
- 任何猜测为什么有时子进程也没有被杀死 -- 随机
【问题讨论】:
标签: linux bash shell signals kill