首先了解以下运行级别对应工具的变化历史:
1、Ubuntu 6.10及以前版本使用Sysvinit。
2、Ubuntu 14.10及以前版本使用Upstart但是还留着Sysvinit并存。
https://wiki.ubuntu.com/Upstart
https://help.ubuntu.com/community/UpstartHowto
3、Ubuntu 15.04开始预设使用Systemd,但是可以在开机选项选择使用Systemd或Upstart,但是不可同時使用Sysvinit或Upstart并存。
https://wiki.ubuntu.com/SystemdForUpstartUsers
下面是分析:
从11.04版起,我想。MySQL由Upstart进行处理,而Apache仍然使用传统的Sysvinit脚本。
对于MySQL,可以使用Upstart中的新的覆盖功能来修改启动行为:
echo "manual" | sudo tee /etc/init/mysql.override
有关更多信息,请参阅Upstart Cookbook中的“ 禁止自动启动作业 ” 一节。
而在16.04版本上,由于使用了Systemd进行接管,以上脚本无法使用,那么需要使用以下脚本来禁止才能通过:
#禁止启动
sudo systemctl disable mysql
#开机启动
sudo systemctl enable mysql
所以,我猜测,MySQL现在整体由Systemd进行处理,但是这仅限于以APT源和deb文件安装的版本,而对于以二进制包(tar.gz压缩包)安装的版本,然仍使用Sysvinit脚本进行控制。
对于Systemd来说,服务在运行级别上简化很多,不用关心运行在哪个运行级别上。默认已经帮你配置好。
对于Apache的分析:
由于Apache仍然使用传统的Sysvinit脚本,可以使用它
sudo update-rc.d -f apache2 remove
从中删除链接/etc/rcX.d
或替代使用
sudo update-rc.d apache2 disable
它通过将脚本从起始脚本更改为停止脚本来“禁用”脚本。这是可逆的
sudo update-rc.d apache2 enable
而对于Sysvinit脚本的操作,对应的工具就是sysv-rc-conf。
参考:
https://askubuntu.com/questions/833094/how-can-i-disable-autostart-of-mysql-server
https://askubuntu.com/questions/57381/how-to-stop-mysql-from-running-at-boot-time