linux – 当信号到来时,杀死bash脚本前景儿童
我在一个bash脚本中包装一个fastcgi应用程序,如下所示:
#!/bin/bash # stuff ./fastcgi_bin # stuff 由于bash只在前景脚本结束时才执行信号陷阱,因为fastcgi应用程序将保持活动,所以不能仅仅杀死-TERM scriptpid. #!/bin/bash # stuff ./fastcgi_bin & PID=$! trap "kill $PID" TERM # stuff 但是如果我这样做,显然stdin和stdout没有正确的重定向,因为它没有连接lighttpds mod_fastgi,前台版本的工作. 编辑:我一直在研究这个问题,发生这种情况是因为在后台启动程序时,bash会将/ dev / null重定向到stdin,所以避免这种情况的任何方法也可以解决我的问题. 任何暗示如何解决这个问题? 解决方法
有一些选项出现在我的脑海中:
>当从shell脚本启动进程时,它们都属于同一进程组.杀死父母的过程让孩子活着,所以整个过程组应该被杀死.这可以通过将否定的PGID(进程组ID)传递给kill来实现,这与父节点的PID相同. ej:kill -TERM – $PARENT_PID 根据mod_fastcgi如何处理工作进程,只有第二个选项可能是可行的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |