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


文章轉載!

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下面創建到腳本的文件連接來解決,原理都是一樣的。

 

 

Linux下chkconfig命令詳解即添加服務以及兩種方式啟動關閉系統服務

 

chkconfig命令主要用來更新(啟動或停止)和查詢系統服務的運行級信息。謹記chkconfig不是立即自動禁止或激活一個服務,它只是簡單的改變了符號連接。

一、chkconfig 的使用語法
1、chkconfig [--add][--del][--list][系統服務] 或 chkconfig [--level <levels等級代號>][系統服務][on/off/reset]

2、參數用法:
  --add  增加所指定的系統服務,讓chkconfig指令得以管理它,並同時在系統啟動的敘述文件內增加相關數據。
  --del  刪除所指定的系統服務,不再由chkconfig指令管理,並同時在系統啟動的敘述文件內刪除相關數據。
  --level<等級代號>  指定讀系統服務要在哪一個執行等級中開啟或關畢。
      等級0表示:表示關機
      等級1表示:單用戶模式
      等級2表示:無網絡連接的多用戶命令行模式
      等級3表示:有網絡連接的多用戶命令行模式
      等級4表示:系統保留
      等級5表示:帶圖形界面的多用戶模式
      等級6表示:重新啟動
 3、需要說明的是,level選項可以指定要查看的運行級而不一定是當前運行級。對於每個運行級,只能有一個啟動腳本或者停止腳本。當切換運行級時,init不會重新啟動已經啟動的服務,也不會再次去停止已經停止的服務。

4、chkconfig --list [name]:顯示所有運行級系統服務的運行狀態信息(on或off)。如果指定了name,那么只顯示指定的服務在不同運行級的狀態。
5、chkconfig --add name:增加一項新的服務。chkconfig確保每個運行級有一項啟動(S)或者殺死(K)入口。如有缺少,則會從缺省的init腳本自動建立。
    chkconfig --del name:刪除服務,並把相關符號連接從/etc/rc[0-6].d刪除。
    chkconfig [--level levels] name:設置某一服務在指定的運行級是被啟動,停止還是重置。

6、運行級文件:
每個被chkconfig管理的服務需要在對應的init.d下的腳本加上兩行或者更多行的注釋。第一行告訴chkconfig缺省啟動的運行級以及啟動和停止的優先級。如果某服務缺省不在任何運行級啟動,那么使用 - 代替運行級。第二行對服務進行描述,可以用\ 跨行注釋。
例如,random.init包含三行:
# chkconfig: 2345 20 80
# description: Saves and restores system entropy pool for \
# higher quality random number generation.

使用范例:
chkconfig --list        #列出所有的系統服務
chkconfig --add httpd        #增加httpd服務
chkconfig --del httpd        #刪除httpd服務
chkconfig --level  2345  httpd  on        #設置httpd在運行級別為2、3、4、5的情況下都是on(開啟)的狀態
chkconfig --list        #列出系統所有的服務啟動情況
chkconfig --list mysqld        #列出mysqld服務設置情況
chkconfig --level 35 mysqld on        #設定mysqld在等級3和5為開機運行服務,--level 35表示操作只在等級3和5執行,on表示啟動,off表示關閉
chkconfig mysqld on        #設定mysqld在各等級為on,“各等級”包括2、3、4、5等級

7、如何增加一個服務:以mysqld 為例
(1)、服務腳本必須存放在/etc/init.d/目錄下;
(2)、chkconfig --add mysqld  #添加服務,在chkconfig工具服務列表中增加此服務,此時服務會被在/etc/rc.d/rcN.d中賦予K/S入口;
(3)、chkconfig --level 35 mysqld on  #  修改服務的默認啟動等級。

二、服務的啟動/關閉
1、系統服務:一直在內存中,而且一直在運行,並提供服務的被稱為服務;

2、而服務也是一個運行的程序,則這個運行的程序則被稱為daemons;

3、這些服務的啟動腳本一般放置在: /etc/init.d

4、在CentOS中服務啟動腳本放置在:/etc/rc.d/init.d而/etc/init.d這個目錄為公認的目錄,在centos中/etc/init.d就是一個鏈接檔案

5、/etc/sysconfig  服務初始化環境變量配置都在這個檔案中。

6、/var/lib  各個服務產生的數據庫都在這個目錄下,最簡單的在這里找到 mysql 使用 vim 打開就可以看到,你建立的數據庫以及系統默認產生的數據庫名稱都在這里面!

7、啟動/停止/重啟服務 :  /etc/init.d/ serverName  start/stop /restart/status

8、啟動/停止/重啟服務:  service  serverName  start/stop/restart  為什么可以這樣寫?

9、service 是一個script  他可以分析你后面下達的參數,然后根據你的參數在到/etc/init.d 下去取得正確的服務來 stop  start  restart

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM