Upstart : 在非 upstart 进程后启动服务

Fal*_*ken 11 linux ubuntu service process upstart

在 Ubuntu 10.04 上,我需要使用 upstart 启动我的服务,但前提是 mysql 启动并运行。

问题是 mysql 本身不是由 upstart 处理的,所以我不能使用“启动”功能。

我能做什么 ?

小智 15

您有几个选择:

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
Run Code Online (Sandbox Code Playgroud)

然后,有你的工作“ start on started mysql-sysv”。

这里的问题是,如果有人(或自动的某些系统工具)将/etc/rc?.d链接重新添加到原始/etc/init.d/mysql服务脚本,您将遇到麻烦。此外,您可能会发现 mysql 直到它的主 pid 启动一段时间后才真正准备好。数据库是有问题的,因为即使它们已经启动(事务日志重放等),它们也可能需要一些时间才能“联机”。

3)创建一个新贵作业(“服务员”),它“在停止的rc上启动”(即在所有SysV作业都声称已完成时启动),然后轮询等待mysql准备好,然后退出。让你的工作“从停止的服务员开始”。

4) 将 mysql 转换为 Upstart 工作(最佳选择)。这里有一个新贵 mysql 配置的起点:https : //github.com/devo-ps/init-scripts/tree/master/mysql/ubuntu