如何将 upstart 与供应商提供的启动程序一起使用?

如何将 upstart 与供应商提供的启动程序一起使用?

例如,我使用以下命令来启动和停止特定的 Web 应用程序:

/usr/local/application/MyServiceController.sh all.start
/usr/local/application/MyServiceController.sh all.stop

这些命令执行一些设置任务并启动几个进程(httpd 和 java)。我想使用 upstart 来监视和控制应用程序,但我不想偏离供应商支持的启动过程。

这可能吗,或者我应该回到 SysV 风格的初始化脚本?

答案1

如果让 Upstart 监控服务不是必需的,您可以执行以下操作(Upstart cookbook:单个作业实例运行,无 PID):

start on filesystem    # or something more suitable
stop on runlevel [06]  # ditto

pre-start exec /usr/local/application/MyServiceController.sh all.start
post-stop exec /usr/local/application/MyServiceController.sh all.stop

这几乎相当于 sysvinit 脚本(也不会有监控)。

至于让 Upstart 监控和重启服务,恐怕没人能想出办法将启动多个独立服务(具有相互依赖性)的任意脚本自动转换为一组等效的 Upstart 作业。

相关内容