在CentOS系統下,主要有兩種方法設定自己安裝的程式開機啟動。
1、把啟動程式的命令添加到/etc/rc.d/rc.local檔案中,比如下面的是設定開機啟動httpd和記錄開機時間。
代碼如下 |
複製代碼 |
#!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. touch /var/lock/subsys/local /usr/local/apache/bin/apachectl start date >>/root/rtime.txt |
2、把寫好的啟動指令碼添加到目錄/etc/rc.d/init.d/,然後使用命令chkconfig設定開機啟動。
例如:我們把httpd的指令碼寫好後放進/etc/rc.d/init.d/目錄,使用
代碼如下 |
複製代碼 |
cd /etc/rc.d/init.d vi youshell.sh #將youshell.sh修改為你自己的指令碼名
|
編寫自己的指令碼後儲存退出。
在編寫指令碼的時候,請先加入以下注釋
代碼如下 |
複製代碼 |
#add for chkconfig #chkconfig: 2345 70 30 #description: the description of the shell #關於指令碼的簡短描述 #processname: servicename #第一個進程名,後邊設定自啟動的時候會用到 |
說明:
2345是指指令碼的運行層級,即在2345這4種模式下都可以運行,234都是文本介面,5就是圖形介面X
70是指指令碼將來的啟動順序號,如果別的程式的啟動順序號比70小(比如44、45),則指令碼需要等這些程式都啟動以後才啟動。
30是指系統關閉時,指令碼的停止順序號。
給指令碼添加上可執行許可權:
代碼如下 |
複製代碼 |
chmod +x youshell.sh |
利用chkconfig命令將指令碼設定為自啟動
代碼如下 |
複製代碼 |
chkconfig --add servicename |
這樣你的指令碼就可以在開機後自動運行了。
另外,在redhat裡也可以使用這個方法來實現開機自啟動。
實命令很簡單的,使用chkconfig即可。比如要將mysqld設定為開機自動啟動:
----------------------------------------------------------------------------------------------
代碼如下 |
複製代碼 |
#chkconfig mysqld on |
同理,要取消掉某個服務自動啟動,只需要將最後的參數“on”變更為“Off”即可。比如要取消postfix的自動啟動:
#chkconfig postfix off
值得注意的是,如果這個服務尚未被添加到chkconfig列表中,則現需要使用–add參數將其添加進去:
代碼如下 |
複製代碼 |
#chkconfig –add postfix |
如果要查詢當前所有自動啟動的服務,可以輸入:
代碼如下 |
複製代碼 |
#chkconfig –list |
但是這樣顯示東西太多了,看起來很暈。如果只想看指定的服務怎麼辦呢?這個時候只需要在“–list”之後加上服務名就好了,比如查看httpd服務是否為自動啟動,就輸入:
代碼如下 |
複製代碼 |
#chkconfig –list httpd |
這個時候輸出的結果:
代碼如下 |
複製代碼 |
httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off |
此時0~6均為off,則說明httpd服務不會在系統啟動的時候自動啟動。我們輸入chkconfig httpd on後,再次檢查輸出結果變為:
代碼如下 |
複製代碼 |
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off |
這個時候2~5都是on,就表明會自動啟動了。