天天看點

Shell腳本安裝成服務加入系統啟動-service XX does not support chkconfig

背景:Shell腳本是linux運維人員必備利器,怎麼樣把shell腳本安裝成服務且加入系統啟動,然後就可以使用服務來管理,這是一個很重要的問題。

當我們運作安裝服務的指令時候,假設服務名為myservice

常常會出現

下面講解正确方法:

1.1給服務腳本添加注釋。

#vim /etc/init.d/myservice

添加下面兩句到 #!/bin/bash 之後。

其中2345是預設啟動級别,級别有0-6共7個級别。

  等級0表示:表示關機   

  等級1表示:單使用者模式   

  等級2表示:無網絡連接配接的多使用者指令行模式   

  等級3表示:有網絡連接配接的多使用者指令行模式   

  等級4表示:不可用   

  等級5表示:帶圖形界面的多使用者模式   

  等級6表示:重新啟動

10是啟動優先級,90是停止優先級,優先級範圍是0-100,數字越大,優先級越低。

二、 另外還要注意幾個問題:

1)啟動腳本的标準結構:

 chkconfig指令主要用來更新(啟動或停止)和查詢系統服務的運作級資訊。謹記chkconfig不是立即自動禁止或激活一個服務,它隻是簡單的改變了符号連接配接。

使用文法:

chkconfig [--add][--del][--list][系統服務] 或 chkconfig[--level <等級代号>][系統服務][on/off/reset]

chkconfig在沒有參數運作時,顯示用法。如果加上服務名,那麼就檢查這個服務是否 在目前運作級啟動。如果是,傳回true,否則傳回false。如果在服務名後面指定了on,off或者reset,那麼chkconfig 會改變指定服務的啟動資訊。on和off分别指服務被啟動和停止,reset指重置服務的啟動資訊,無論有問題的初始化腳本指定了什麼。on和off開關,系統預設隻對運作級3,4,5有效,但是reset可以對所有運作級有效。

使用範例:

chkconfig --list        #列出所有的系統服務

chkconfig --add httpd     #增加httpd服務

chkconfig --del httpd     #删除httpd服務

chkconfig --level httpd 2345 on #設定httpd在運作級别為2、3、4、5的情況下都是on(開啟)的狀态

chkconfig --list        #列出系統所有的服務啟動情況

chkconfig --list mysqld     #列出mysqld服務設定情況

chkconfig --level 35 mysqld on #設定mysqld在等級3和5為開機運作服務,--level35表示操作隻在等級3和5執行,on表示啟動,off表示關閉

chkconfig mysqld on     #設定mysqld在各等級為on,“各等級”包括2、3、4、5等級

/etc目錄下有一組rc開頭目錄,它們用來存放在各個運作級别下linux自動啟動的服務:

/etc/rc0.d/ #運作模式0下需要啟動的服務

/etc/rc1.d/ #運作模式1下需要啟動的服務

/etc/rc2.d/ #運作模式2下需要啟動的服務

/etc/rc3.d/ #運作模式3下需要啟動的服務

/etc/rc4.d/ #運作模式4下需要啟動的服務

/etc/rc5.d/ #運作模式5下需要啟動的服務

/etc/rc6.d/ #運作模式6下需要啟動的服務

這些目錄中除README說明文檔之外放的都是些軟連結(符号連結),這些連結指向各服務的程序管理腳本,而這些程序管理腳本都放在/etc/init.d目錄中.

  用chkconfig指令操作的添加或者删除開機自動啟動服務程式,其實就是建立或删除這些目錄中的軟連結. 每個軟連結的命名都是"大寫S+運作順序+腳本名稱",裡面有一個連結是"S20rc.local -> ../init.d/rc.local".打開它指向的腳本/etc/init.d/rc.local看一下,發現它裡面調用了/etc/rc.local這個腳本.原來/etc/rc.local中的指令是在這兒執行的.

  如果把mysql服務的啟動指令放進/etc/rc.local中,作業系統也會在執行這個清單的時候執行它,不過它的執行順序是20,比排在前面的S17mysql還要晚一些~

chconfig --level 2345 puppet off 等價于 chkconfig puppet off (不用--level 指定級别時,預設是2345)

這條指令是設定 puppet 服務在 2345級别不自動啟動,當執行這條指令時,會在

rc2.d rc3.d rc4.d rc5.d 這幾個目錄建立軟連接配接K02puppet 從 /etc/rc.d/init/puppet 腳本

chkconfig puppet on 這個就是在2345級别時,開機自動啟動

當執行這條指令時,會在

rc2.d rc3.d rc4.d rc5.d 這幾個目錄建立軟連接配接S98puppet 從 /etc/rc.d/init/puppet 腳本

那這個 K02puppet S98puppet 中的 02 和 98 是怎麼來的?

打開/etc/rc.d/init.d/puppet這個腳本檔案,看前幾行 如下:

#!/bin/bash

# puppet        Init script for running the puppetclient daemon

#

# Author:       Duane Griffin

#               David Lutterkort

# chkconfig: - 98 02

# description: Enables periodic systemconfiguration checks through puppet.

# processname: puppet

# config: /etc/sysconfig/puppet

特别是這行

chkconfig 指令會讀取這一行,來擷取運作級别和那2個數字的,在這個腳本裡面

本文轉自pizibaidu 51CTO部落格,原文連結:http://blog.51cto.com/pizibaidu/1795909,如需轉載請自行聯系原作者