Ubuntu LSB脚本如何添加mysql依赖?

网上查到的描述是这样的:Required-Start关键字来申明在运行该脚本之前应该需要先运行哪些脚本。
我在# Required-Start: 添加了mysql服务,但是我把mysql服务停止后,执行/etc/init.d/myserver restart后mysql服务并不会在myserver服务启动前启动,而且还是stop状态。

### BEGIN INIT INFO
# Provides:          myserver
# Required-Start:    $remote_fs $syslog mysql
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO
阅读 2.3k
2 个回答

你看的资料已经过时,ubuntu早就不用这玩意管理服务了,10.04以上用的upstart,16.04开始用的systemd,自带就有服务依赖解决方案,不要再看这些过时的资料了。比如让你的服务依赖mysql: https://serverfault.com/quest...

无需再写那一堆配置了。

恕我直言,让你的程序直接依赖数据库不是一个好的解决方案,不利于未来的微服务架构。现在的连接池都支持自动重连的功能,因此没必要添加数据库的依赖。再者产品环境可能数据库和应用程序不在一台服务器上,应用程序所在的服务器根本没有数据库,这个依赖就无法执行。

更合理的解决方案是你的服务依赖中不要有mysql,让连接池去解决这个问题就行了,你需要做的就是处理一下数据库连接失败应该怎么做,是直接咔嚓掉进程(exit(ERROR_CODE))?还是重启?还是等待重试?

Required-Start 并不会主动去启动要求的服务。
只是声明Required-Start列出的服务都启动后我这个服务也可以启动了。