我目前正在通过实践学习 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
该事件。
有关详细信息和最佳实践,请参阅新贵食谱。