首先了解以下運行級別對應工具的變化歷史:
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