方法一: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