如何依赖 Ubuntu 12.04 上的 init 脚本中的新贵工作

Mar*_* C. 10 upstart ubuntu ubuntu-12.04

我使用的是 Ubuntu 12.04 LTS,该系统主要使用新贵工作。不幸的是,我的系统还依赖于手动编译的dbmail服务器,它只有一个 init 脚本,但没有 upstart 脚本。

使用update-rc.d dbmail defaults我为所有运行级别安装了 dbmail,但不幸的是它在 MySQL 启动之前启动,因此守护进程再次死亡。我也尝试将其移至 S90 或类似版本,但在运行脚本时仍然无法使用 MySQL。

我尝试向脚本的 LSB 标头添加依赖项,如下所示:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          dbmail
# Required-Start:    $local_fs $remote_fs $syslog $network mysql
# Required-Stop:     $local_fs $remote_fs $syslog $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start dbmail services
# Description:       Run network services provided by dbmail such as
#                    imap-server, pop3-server, lmtp-server, timsieve-server
### END INIT INFO
Run Code Online (Sandbox Code Playgroud)

不幸的是,脚本似乎仍然在 MySQL 之前启动。我习惯于陈旧的 init 脚本,而不是新贵的工作,所以我在这里有点困惑。如何添加依赖项或如何mysqldbmailinit 脚本之前启动作业?

如何在启动期间检查/查看作业 + init 脚本的启动顺序?有这个工具吗?

启动后从 shell 手动启动脚本工作正常,因为 MySQL 已经在运行。

小智 12

我想如果你/etc/init.d/dbmail start从运行/etc/rc.local,它会在你所有的新贵工作/其他初始化脚本之后启动。

但是,我可能会通过在/etc/init/dbmail.conf. 通常 init.d 脚本有很多用于检查状态等的代码,由 upstart 为您处理。它可能很简单:

start on started mysql
exec /usr/local/bin/dbmail
Run Code Online (Sandbox Code Playgroud)

或者,您可以像这样使用现有的 init 脚本:

start on started mysql
pre-start script
  /etc/init.d/dbmail start
end script
post-stop script
  /etc/init.d/dbmail stop
end script
Run Code Online (Sandbox Code Playgroud)