我的bash脚本被标记为重复启动一个程序并在执行约KILL_EVERY秒后将其关闭 . 问题是我用CTRL C停止脚本,它留下了它实例化的最后一个进程 .
我尝试为SIGINT设置一个陷阱并杀死进程$ ID,但是发生的事情是循环中断了 . 我怀疑这是因为在$ PROGRAM第一次被杀之后,陷阱会以某种方式激活,如果它存在,则会杀死下一个实例 .
如何解决这个问题,使脚本重复启动,等待KILL_EVERY秒,然后杀死$ PROGRAM但CTRL C不会让$ PROGRAM实例在后台运行?
KILL_EVERY=${1:-0}
PROGRAM=path/to/program
if [ $KILL_EVERY -gt 0]; then
while true ; do
ID=exec $PROGRAM &
sleep $KILL_EVERY
kill -9 $ID
done
else
exec $PROGRAM
fi
1 回答
你可以做:
当你执行
ctrl+c
时,这将终止进程组中的所有内容 .