Answers:
您有几种选择:
1)通过发出事件使mysql通知Upstart它已经启动
initctl emit mysql-started
”或类似。
这可以通过将initctl
调用添加到中来处理/etc/init.d/mysql
。
2)从正常的SysV运行级别禁用mysql并创建一个包装器Upstart作业来启动它(这不能解决停止-只是一个例子):
cat >>/etc/init/mysql-sysv.conf<<EOT
# wait for SysV job to finish
start on stopped rc
exec /etc/init.d/mysql start
EOT
然后,完成工作“ start on started mysql-sysv
”。
这里的问题是,如果有人(或自动使用某些系统工具)将/etc/rc?.d
链接重新添加到原始/etc/init.d/mysql
服务脚本中,您将遇到麻烦。此外,您可能会发现,直到主pid启动一段时间后,mysql才真正准备就绪。数据库存在问题,因为即使它们已经启动(转换日志重播等),它们也可能需要一些时间才能“联机”。
3)创建一个“在停止的rc上启动”的新贵作业(“ waiter”)(即,在所有SysV作业都声称已完成时启动),然后轮询等待mysql准备就绪,然后退出。让您的工作“在停止的服务员上启动”。
4)将mysql转换为Upstart作业(最佳选择)。这里有一个新贵的mysql配置的起点:https : //github.com/devo-ps/init-scripts/tree/master/mysql/ubuntu
os.system('/sbin/initctl emit consul-finished')
,然后通过start on consul-finished
initctl emit cloud-init-finished
了sysv服务才能进行挂接
我建议在所有非暴发作业完成后开始您的暴发作业:
start on started rc
/etc/init/rc.conf
是从新贵内部启动非新贵工作的东西。
怎么样使用
pre-start exec /etc/init.d/mysql start
在您的新贵工作中!