Upstart kill 超时时间没有被遵守?

Upstart kill 超时时间没有被遵守?

我目前正在通过实践学习 upstart。我想我现在已经理解了它的原理,但我对 upstart 作业中的“kill timeout”节感到困惑。

例如,我有以下作业(文件名为 /etc/init/test.conf):

description "test"
start on test
console owner
kill timeout 5
task
exec /root/test

文件 /root/test 是一个永远运行的小型 shell 脚本:

while true; do o=1; done;

当执行“initctl start test”时,作业“test”运行并调用脚本“/root/test”。我可以通过执行“initctl status test”来验证,它显示作业正在运行,也可以通过执行“ps -Alf”来验证。

现在,“kill timeout 5”节应该导致作业在 5 秒后被终止。但相反,作业似乎永远运行下去。

我想知道我是否正确使用和理解了 kill timeout 节。这对我来说是一项必不可少的功能。

这是关于 Natty 11.04 的问题,但我认为这个问题也适用于其他版本。

非常感谢,

比纳鲁斯

答案1

这并不是真正kill timeout起作用的;它指定在发送礼貌的“终止”信号后等待进程退出多长时间才放弃并发射核弹。

如果您想以某种方式设置进程时间限制upstart,最简单的方法可能是让某些东西定期发出事件timer,然后使用stop on timer。或者(也许更普遍),创建一个包装程序,它分叉一个小进程,该进程在一段时间后发送一个事件,然后发送stop on该事件。

有关详细信息和最佳实践,请参阅新贵食谱

相关内容