linux自訂開機啟動服務和chkconfig使用方法

來源:互聯網
上載者:User

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選項僅對2、3、4、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下面建立到指令碼的檔案串連來解決,原理都是一樣的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.