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

2021-07-11 18:35:15 字數 2959 閱讀 4051

服務概述

在linux作業系統下,經常需要建立一些服務,這些服務被做成shell指令碼,這些服務需要在系統啟動的時候自動啟動,關閉的時候自動關閉。

將需要自動啟動的指令碼/etc/rc.d/init.d目錄下,然後用命令chkconfig --add filename將自動註冊開機啟動和關機關閉。實質就是在rc0.d-rc6.d目錄下生成一些檔案連線,這些連線連線到/etc/rc.d/init.d目錄下指定檔案的shell指令碼。

在文章linux下oracle自動啟動與停止(一)

,linux下oracle自動啟動與停止(二)

對建立服務有一些描述。

手工建立服務

在/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命令。

chkconfig命令用法

語法:chkconfig --list [name]

chkconfig --add name

chkconfig --del name

chkconfig [--level levels] name

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時,會報錯。

常見的錯誤

服務不支援 chkconfig」:

請注意檢查指令碼的前面,是否有完整的兩行:

#chkconfig: 2345 80 90

#description:auto_run

在指令碼前面這兩行是不能少的,否則不能chkconfig命令會報錯誤。

如果執行chkconfig老是報錯,如果指令碼沒有問題,我建議,直接在rc0.d~rc6.d下面建立到指令碼的檔案連線來解決,原理都是一樣的。

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

服務概述 在linux作業系統下,經常需要建立一些服務,這些服務被做成shell指令碼,這些服務需要在系統啟動的時候自動啟動,關閉的時候自動關閉。將需要自動啟動的指令碼 etc rc.d init.d目錄下,然後用命令chkconfig add filename將自動註冊開機啟動和關機關閉。實質就是...

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

服務概述 在linux作業系統下,經常需要建立一些服務,這些服務被做成shell指令碼,這些服務需要在系統啟動的時候自動啟動,關閉的時候自動關閉。將 需要自動啟動的指令碼 etc rc.d init.d目錄下,然後用命令chkconfig add filename將自動註冊開機啟動和關機關閉。實質就...

Linux 開機啟動服務

概述 在linux下不是所有的軟體安裝完成後都有開機啟動服務,有些要自己手動去新增或刪除.7.0版本之前 chkconfig list 開機啟動服務查詢.add 新增開機啟動服務.新增的開機啟動服務必須在 etc init.d目錄下才可以使用該選項新增.level 設定開機啟動服務在某個級別下開啟或...