使用sigterm终止进程并在超时后升级为sigkill

时间:2018-03-12 23:27:21

标签: bash sigkill sigterm

有没有办法在超时时sigterm进程?如果该过程在30分钟内没有正常终止,则该过程应该是sigkill。理想情况下,应该在后台执行此正常关闭。

1 个答案:

答案 0 :(得分:2)

timeout command,它允许您限制进程的执行时间,如果它没有及时响应初始信号(默认为SIGTERM),则升级为SIGKILL。这不是你要求的,但它可能就足够了。

要做你实际描述的事情(发送信号,短暂等待,然后发送杀戮)你可能需要自己做一些簿记,如this question详细信息。

一种选择是使用Upstart(或者我想象其他服务经理),它提供了kill timeout n command,可以满足您的需求。

顺便说一句,许多系统会将30分钟视为很多太久等待SIGTERM。例如,Linux做的事情类似于你在关机时所描述的内容,但是在SIGKILLing之前,只需几秒钟就可以清理和退出进程。对于其他用例,您当然可以拥有您所描述的长期终止(例如使用Upstart),但是YMMV。