例如,我使用以下命令来启动和停止特定的 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 作业。