有沒有覺得執行指令碼的時候需要寫長長的絕對路徑很難受,要想輕鬆很簡單,把自己寫的指令碼通過開啟服務一樣執行,像啟動apache一樣啟動你的腳步的。(ps:其實apache也是個指令碼)
一.首先了解一下基本的知識和概念
系統執行級別:
# 0 - 停機(千萬不能把initdefault 設定為0 )
# 1 - 單使用者模式 # s init s = init 1
# 2 - 多使用者,沒有 nfs
# 3 - 完全多使用者模式(標準的執行級)
# 4 - 沒有用到
# 5 - x11 多使用者圖形模式(xwindow)
# 6 - 重新啟動 (千萬不要把initdefault 設定為6 )
二.ok,再來了解下chkconfig
不像dos 或者 windows,linux 可以有多種執行級。常見的就是多使用者的2,3,4,5 ,很多人知道 5 是執行 x-windows 的級別,而 0 就 是關機了。執行級的改變可以通過 init 命令來切換。例如,假設你要維護系統進入單使用者狀態,那麼,可以使用 init 1 來切換。在 linux 的執行級的切換過程中,系統會自動尋找對應執行級的目錄/etc/rc[0-6].d下的k 和 s 開頭的檔案,按後面的數字順序,執行這些指令碼。對這些指令碼的維護,是很繁瑣的一件事情,linux 提供了chkconfig命令用來更新和查詢不同執行級上的系統服務。
語法為:
chkconfig --list [name]
chkconfig --add name
chkconfig --del name
chkconfig [--level levels] name
chkconfig [--level levels] name
chkconfig 有五項功能:新增服務,刪除服務,列表服務,改變啟動資訊以及檢查特定服務的啟動狀態。
chkconfig 沒有引數執行時,顯示用法。如果加上服務名,那麼就檢查這個服務是否在當前執行級啟動。如果是,返回 true,否則返回 false。 --level 選項可以指定要檢視的執行級而不一定是當前執行級。
如果在服務名後面指定了on,off 或者 reset,那麼 chkconfig 會改變指定服務的啟動資訊。on 和 off 分別指服務在改變執行級時的 啟動和停止。reset 指初始化服務資訊,無論有問題的初始化指令碼指定了什麼。
對於 on 和 off 開關,系統預設只對執行級 3,4, 5有效,但是 reset 可以對所有執行級有效。指定 --level 選項時,可以選擇特 定的執行級。
需要說明的是,對於每個執行級,只能有乙個啟動指令碼或者停止指令碼。當切換執行級時,init 不會重新啟動已經啟動的服務,也不會再 次去停止已經停止的服務。
選項介紹:
--level levels
指定執行級,由數字 0 到 7 構成的字串,如:
--level 35 表示指定執行級3 和5。
要在執行級別3、4、5中停運 nfs 服務,使用下面的命令:chkconfig --level 345 nfs off
--add name
這個選項增加一項新的服務,chkconfig 確保每個執行級有一項 啟動(s) 或者 殺死(k) 入口。如有缺少,則會從預設的init 指令碼自動 建立。
--del name
用來刪除服務,並把相關符號連線從 /etc/rc[0-6].d 刪除。
--list name
列表,如果指定了name 那麼只是顯示指定的服務名,否則,列出全部服務在不同執行級的狀態。
執行級檔案
每個被chkconfig 管理的服務需要在對應的init.d 下的指令碼加上兩行或者更多行的注釋。
第一行告訴 chkconfig 預設啟動的執行級以及啟動和停止的優先順序。如果某服務預設不在任何執行級啟動,那麼使用 - 代替執行級。
第二行對服務進行描述,可以用 跨行注釋。
三.好,開始正題。自己寫個指令碼(只是演示,所以超簡單!)
[root@vm_48_191_centos ~]# cat 1.sh
#執行這個指令碼,不管是否有123.txt,都會建立它並且向裡面以累加的方式寫入1
#!/bin/bash
##description: a demo 對這個指令碼的描述,實際沒什麼意義
#chkconfig:2345 88 77 在2345級別下會去找s881.sh這個檔案,在通過軟鏈結,到達/etc/init.d/1.sh啟動這個服務,在016級別下以k771.sh這個檔案,在通過軟鏈結到/etc/init.d/1.sh關閉這個「服務,所以說這個88和77其實可以隨意寫,即使兩個指令碼寫一樣的88和77也不會衝突,因為到rc2.d下它的命名規則都是啟動(s881.sh)或者停止(k771.sh),指令碼名唯一,那麼就不衝突。
echo "1" >> /root/123.txt
把這個指令碼賦予許可權並且copy到/etc/init.d下:
chmod a+x 1.sh
cp 1.sh /etc/init.d/
新增到系統服務:
chkconfig --add 1.sh
然後執行下:
[root@vm_48_191_centos ~]# service 1.sh start
好成功了。接下來,驗證下各個級別下是否已經生成了檔案。
四.這裡都是圖
將redis服務加入到window服務
將redis服務加入到window服務 1 在cmd命令視窗下執行 redis server.exe service install redis.windows.conf loglevel verbose 示例 e wrcold520 redis 3.2.100 windows 32 redis r...
Tomcat加入到系統服務中
命令列使用sc命令.關於sc命令的詳解,請自行檢視幫助 sc 在此只簡單提及如何加入系統服務功能.加入服務 sc create servicename binpath 路徑 start auto 等號後面的空格必須 刪除服務 sc delete servicename e.g 將tomcat加入到系...
如何將redis加入到Windows 服務中
分類專欄 python學習 將redis加入到windows 服務的方法 2 解壓到指定目錄,如d redis 3 首先將cmd指定到解壓後的目錄資料夾下,輸入命令 安裝命令 redis server.exe service install redis.windows.conf loglevel v...