linux自定義開機啓動服務和chkconfig使用方法
1. 服務概述
在linux操做系統下,常常須要建立一些服務,這些服務被作成shell腳本,這些服務須要在系統啓動的時候自動啓動,關閉的時候自動關閉。
將須要自動啓動的腳本/etc/rc.d/init.d目錄下,而後用命令chkconfig --add filename將自動註冊開機啓動和關機關閉。實質就是在rc0.d-rc6.d目錄下生成一些文件鏈接,這些鏈接鏈接到/etc/rc.d /init.d目錄下指定文件的shell腳本。
2. 手工建立服務
在/etc/rc.d/init.d目錄下建立shell腳本,文件名auto_run。
設置腳本的運行權限chmod +x auto_run。
而後在rc0.d-rc6.d目錄下分別建立文件鏈接。
ln -s /etc/rc.d/init.d/auto_run /etc/rc.d/rc2.d/S99auto_run
ln -s /etc/rc.d/init.d/auto_run /etc/rc.d/rc3.d/S99auto_run
ln -s /etc/rc.d/init.d/auto_run /etc/rc.d/rc5.d/S99auto_run
ln -s /etc/rc.d/init.d/auto_run /etc/rc.d/rc0.d/K01auto_run
ln -s /etc/rc.d/init.d/auto_run /etc/rc.d/rc6.d/K01auto_run
這樣系統在啓動的時候,就會運行auto_run 並加上start參數,等同於執行命令auto_run start。
在系統關閉的時候,就會運行auto_run,並加上stop參數,等同於運行命令auto_run stop。
建立鏈接的6條命令能夠用命令chkconfig --add auto_run來完成,這樣就簡單多了,還不容易出錯。
下面就介紹一下chkconfig命令。
3. chkconfig命令用法
語法:
chkconfig --list [name]
chkconfig --add name
chkconfig --del name
chkconfig [--level levels] name <on|off|reset>
chkconfig [--level levels] name
說明:
chkconfig提供一種簡單的命令行工具來幫助管理員對/etc/rc[0-6].d目錄層次下的衆多的符號連接進行直接操做。
此命令使用是由chkconfig命令在IRIX操做系統提供受權。不用在/etc/rc[0-6].d目錄下直接維護配置信息,而是直接在/etc/rc[0-6]下管理連接文件。在運行級別的目錄下的配置信息通知在將會初始啓動哪些服務。
Chkconfig有五個很明確的功能:爲管理增長一個新的功能、刪除一個功能、列出當前服務的啓動信息、改變一個服務的啓動信息和檢測特殊服務的啓動狀態。
當chkconfig沒有參數運行時,它將顯示其使用方法。若是隻給出了一個服務名,它將檢測這個服務名是否已經被配置到了當前運行級別中。若是已經配置,返回真,不然返回假。--level選項能夠被用作查詢多個運行級別而不只僅是一個。
若是在服務名以後指定了on,、off或reset,chkconfig將改變指定服務的啓動信息。On或off標記服務被打開或中止,尤爲是在運行級別被改變時。Reset標記重置服務的啓動信息。
默認狀況下,on或off選項僅對二、三、四、5有影響,而 reset影響全部的運行級。--level選項能夠被用於指定哪一個運行級別接收影響。
注意:對於每一個服務,每個運行級都有一個開始角本和一個結束角本。當開或關一個運行級時,init不會從新開始一個已經運行的服務,也不會從新中止一個未運行的服務。
選項:
--level levels
指定一個運行級別適合的操做。範圍爲0-7。
--add name
增長一個新的服務。
--del name
刪除一個服務
--list name
顯示服務的狀況
RUNLEVEL FILES
每一個經過chkconfig管理的服務在其init.d目錄下的角本中都須要兩行或多行的註釋。第一行告訴chkconfig在默認狀況下什麼運行級別的服務能夠開始,也就是所說的開始或結束的優先級別。若是服務沒有默認的級別,建造將在全部運行級別中啓動。a – 將用於代替運行級列表。第二個註釋行包括對此服務的描述,能夠經過反斜線符號擴展爲多行。
示例,auto_run的前三行以下:
#!/bin/sh
#chkconfig: 2345 80 90
#description:auto_run
第一行,告訴系統使用的shell,因此的shell腳本都是這樣。
第二行,chkconfig後面有三個參數2345,80和90告訴chkconfig程序,須要在rc2.d~rc5.d目錄下,建立名字爲 S80auto_run的文件鏈接,鏈接到/etc/rc.d/init.d目錄下的的auto_run腳本。第一個字符是S,系統在啓動的時候,運行腳本auto_run,就會添加一個start參數,告訴腳本,如今是啓動模式。同時在rc0.d和rc6.d目錄下,建立名字爲K90auto_run的文件鏈接,第一個字符爲K,系統在關閉系統的時候,會運行auto_run,添加一個stop,告訴腳本,如今是關閉模式。
注意上面的三行中,第二,第三行是必須的,不然在運行chkconfig --add auto_run時,會報錯。
4. 常見的錯誤
「服務不支持 chkconfig」:
請注意檢查腳本的前面,是否有完整的兩行:
#chkconfig: 2345 80 90
#description:auto_run
在腳本前面這兩行是不能少的,不然不能chkconfig命令會報錯誤。
若是運行chkconfig總是報錯,若是腳本沒有問題,我建議,直接在rc0.d~rc6.d下面建立到腳本的文件鏈接來解決,原理都是同樣的。html