我的流程需要一些时间才能启动,也可能会失败。在我的代码示例中,此行为在脚本块中进行了模拟。相关进程应在主进程启动时启动。因此,我在启动后的脚本中添加了sleep 2。
#!upstart
post-start script
sleep 2
end script
script
sleep 1
false
end script
这很好用:开始:作业无法启动
问题是服务在这2秒内启动两次:第一次调用按预期失败,但第二次调用有效,而upstart认为该进程正在从其上运行:
service foo start
start: Job failed to start
service foo start
foo start/running
有更好的方法吗?我也可以将此延迟添加到依赖进程,但它不是很优雅...也没有启动后的睡眠,进程总是会在短时间后开始并在后台死亡。这样,如果主进程在1秒内死亡,用户就会立即获得反馈。