我想编写一个Shell脚本,该脚本在后台生成几个长时间运行的进程,然后四处徘徊。收到SIGTERM后,我希望所有子流程也终止。
基本上,我想要一个“主过程”。
这是到目前为止我得到的:
#!/bin/sh
sleep 600 &
PID1="$!"
sleep 600 &
PID2="$!"
# supposedly this should kill the child processes on SIGTERM.
trap "kill $PID1 $PID2" SIGTERM
wait
上面的脚本以
trap: 10: SIGTERM: bad trap
失败。编辑:我正在使用Ubuntu 9.04
最佳答案
这对我有用:
trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT
kill -- -$$
将SIGTERM发送到整个进程组,因此也杀死了后代。 EXIT
时,指定信号set -e
很有用(更多详细信息here)。 关于bash - shell脚本以生成进程,并终止SIGTERM上的子级,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/976059/