有没有办法在超时时sigterm进程?如果该过程在30分钟内没有正常终止,则该过程应该是sigkill。理想情况下,应该在后台执行此正常关闭。
答案 0 :(得分:2)
有timeout
command,它允许您限制进程的执行时间,如果它没有及时响应初始信号(默认为SIGTERM),则升级为SIGKILL。这不是你要求的,但它可能就足够了。
要做你实际描述的事情(发送信号,短暂等待,然后发送杀戮)你可能需要自己做一些簿记,如this question详细信息。
一种选择是使用Upstart(或者我想象其他服务经理),它提供了kill timeout n
command,可以满足您的需求。
顺便说一句,许多系统会将30分钟视为很多太久等待SIGTERM。例如,Linux做的事情类似于你在关机时所描述的内容,但是在SIGKILLing之前,只需几秒钟就可以清理和退出进程。对于其他用例,您当然可以拥有您所描述的长期终止(例如使用Upstart),但是YMMV。