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

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

在 Ubuntu 10.04 上,我需要使用 upstart 启动我的服务,但仅当 mysql 启动并运行时才需要。

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

我能做些什么 ?

答案1

您有以下几种选择:

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。此外,您可能会发现 mysql 实际上直到一段时间才准备就绪其主进程标识符已启动。数据库存在问题,因为即使已启动(事务日志重放等),它们也可能需要一些时间才能“上线”。

3) 创建一个 upstart 作业(“waiter”),该作业执行“在 rc 停止时启动”(即,当所有 SysV 作业都声称已完成时启动),然后轮询等待 mysql 准备就绪,然后退出。让您的作业“在 waiter 停止时启动”。

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

答案2

我建议你从新贵工作开始全部非 upstart 作业已完成:

start on started rc

/etc/init/rc.conf是从 upstart 内部启动非 upstart 任务的东西。

道具:https://serverfault.com/a/533481

答案3

如何使用

pre-start exec /etc/init.d/mysql start

在你的新贵工作中!

相关内容