问题描述
我正在使用Ubuntu 12.04 LTS,该系统主要使用新贵作业。不幸的是,我的系统还依赖于手动编译的dbmail服务器,该服务器只有一个初始化脚本,而没有新贵脚本。
我使用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
不幸的是,该脚本似乎仍在MySQL之前启动。我习惯于old-fashined初始化脚本,而不是为了暴发户工作,所以我在这里有些困惑。如何添加依赖关系或如何使mysql
作业在dbmail
初始化脚本之前启动?
如何在启动过程中检查/查看作业+初始化脚本的启动顺序?有这个工具吗?
启动后从 shell 手动启动脚本可以正常工作,因为那时MySQL已经在运行。
最佳思路
我认为,如果您从/etc/rc.local
运行/etc/init.d/dbmail start
,它将在所有新手作业/其他初始化脚本之后启动。
但是,我可能会通过在/etc/init/dbmail.conf
中添加新的新贵工作来解决此问题。通常,init.d脚本包含许多用于检查状态等的代码,这些代码由新贵为您处理。它可能很简单:
start on started mysql
exec /usr/local/bin/dbmail
或者,您可能可以使用现有的初始化脚本,如下所示:
start on started mysql
pre-start script
/etc/init.d/dbmail start
end script
post-stop script
/etc/init.d/dbmail stop
end script