CentOS 設定開機自啟動服務的兩種方法
CentOS 設定開機自啟動服務
在CentOS或者RedHat其他系統下,如果是後面安裝的服務,如httpd、mysqld、postfix等,安裝後系統預設不會自動啟動的。
就算手動執行 /etc/init.d/mysqld start 啟動了服務,只要伺服器重啟後,系統仍然不會自動啟動服務。 在這個時候,我們就需要在安裝後做個設定,讓系統自動啟動這些服務,避免不必要的損失和麻煩。
- Markdown和擴充套件Markdown簡潔的語法
- 程式碼塊高亮
- 圖片連結和圖片上傳
- LaTex數學公式
- UML序列圖和流程圖
- 離線寫部落格
- 匯入匯出Markdown檔案
- 豐富的快捷鍵
一. 實驗環境
CentOS 7.5
方法一:ln -s 建立軟連線
- 在CentOS中總共有7種執行級別,可以在/etc/inittab 檔案中進行設定,7種執行級別對應著 /etc/rc.d/rc[0-6].d 這七個目錄
ps: 你可能也發現了在/etc下也有同樣的7個資料夾即 /etc/rc[0-6].d ,通過檢視發現/etc/rc[0-6].d其實就是/etc/rc.d/rc[0-6].d的軟連線,只是為了保持和Unix的相容性
這7個目錄對應著7種不同執行級別,也就是說在每一個目錄下的內容表示在該執行級別下應該啟動或者關閉的服務。例如我們看一下/etc/rc.d/rc5.d目錄下的內容
當然你可能也發現了,這些檔案是按照如下格式命名的 [KS][1-100]servicename ,它表示當系統的執行級別為5時,它會關掉以K開頭的所有服務,並啟動所有以S開頭的服務,其實,這些服務都是/etc/init.d/中某個服務的軟連線,所以真正啟動的服務是/etc/init.d目錄中的某一個服務,而以K/S開頭建立軟連線是為了表明在對應級別下應該採取的行為,K/S後面緊跟的數字表示開/關服務的優先順序。因此,如果我們自己寫了一個指令碼程式碼 如cleanupd,需要在開機級別為3的時候自啟動的話,那麼我們只需要把可執行的cleanupd指令碼檔案放到 /etc/init.d目錄下,並在對應的執行級別目錄下 如/etc/rc.d/rc3.d/ 建立一個以S開頭後加數字的軟連線到/etc/init.d/cleanupd即可,如
[root@localhost ~]# ln -s /etc/init.d/cleanupd /etc/rc.d/rc3.d/S95cleanup
顯然,這樣的設定方式比較繁瑣,僅僅適合於我們想DIY的指令碼服務。
方法2:chkconfig
鑑於上面的手工操作比較繁瑣,在CentOS中專門提供了chkconfig 命令來設定或者取消開機自啟動服務。如,查詢所有開機啟動的服務:
使用chkconfig 或者 chkconfig –list就可以看出當前系統已經設定的各個服務在各個執行級別下的開閉狀態。如果我們想設定某個服務自啟動或者關閉的話,那麼只需要按照下面的格式使用即可
chkconfig servicename on/off
如:
1. 檢視 sshd
2. 將 sshd 設定為開機自啟動:
[root@host ~]# chkconfig sshd on
取消 sshd 的開機自啟動,只需要將 on 改為 off 即可:
[root@host ~]# chkconfig sshd off
3.值得注意的是,如果這個服務尚未被新增到 chkconfig 列表中,則現需要使用 –-add 引數將其新增進去:
[root@host ~]# chkconfig --add sshd
4.如果要查詢當前所有自動啟動的服務,可以輸入:
[root@host ~]# chkconfig --list
5.如果只想看指定的服務,只需要在 “–-list” 之後加上服務名就好了,比如檢視httpd服務是否為自動啟動:
[root@host ~]# chkconfig --list httpd
[root@host ~]# chkconfig --list httpd
httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
此時0~6均為off,則說明httpd服務不會在系統啟動的時候自動啟動。我們輸入:
[root@host ~]# chkconfig httpd on
則此時為:
[root@host ~]# chkconfig --list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
這個時候2~5都是on,就表明會自動啟動了。
方法三:修改 /etc/rc.d/rc.local 這個檔案:
例如將 apache、MySQL、samba、svn 等這些服務的開機自啟動問題一起搞定:
vi/etc/rc.d/rc.local
新增以下命令
/usr/sbin/apachectlstart
/etc/rc.d/init.d/mysqldstart
/etc/rc.d/init.d/smbstart
/usr/local/subversion/bin/svnserve-d