网上查到的描述是这样的: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
你看的资料已经过时,ubuntu早就不用这玩意管理服务了,10.04以上用的upstart,16.04开始用的systemd,自带就有服务依赖解决方案,不要再看这些过时的资料了。比如让你的服务依赖mysql: https://serverfault.com/quest...
无需再写那一堆配置了。
恕我直言,让你的程序直接依赖数据库不是一个好的解决方案,不利于未来的微服务架构。现在的连接池都支持自动重连的功能,因此没必要添加数据库的依赖。再者产品环境可能数据库和应用程序不在一台服务器上,应用程序所在的服务器根本没有数据库,这个依赖就无法执行。
更合理的解决方案是你的服务依赖中不要有mysql,让连接池去解决这个问题就行了,你需要做的就是处理一下数据库连接失败应该怎么做,是直接咔嚓掉进程(exit(ERROR_CODE))?还是重启?还是等待重试?