1. 程式人生 > >建立SysV系統指令碼(可指定執行級別自動啟動)

建立SysV系統指令碼(可指定執行級別自動啟動)

/etc/rc.d/init.d  /etc/init.d

服務類指令碼
    sysV  /etc/rc.d/init.d
        必須有的選項:
            start stop restart status

chkconfig
    指令碼的前面必須有下面兩行,如果沒有 chkconfig命令檢測不到此指令碼

    # chkconfig: runlevels SS KK
    runlevels:
        當chkconfig命令來為此指令碼在rc#.d目錄建立連結時,runlevels表示預設建立為S*開頭的連結,\n除此之外的級別預設建立為K*開頭的連結;S後面的啟動優先順序為SS所表示的數字;K後面關閉優先次序為KK所表示的數字;
    # description: 用於簡單說明此指令碼的功能; \ 換行

chkconfig --list: 檢視所有獨立守護服務的啟動設定

chkconfig --add service_name
chkconfig --del service_name
chkconfig --level runlevels service_name {on|off}

測試指令碼 myservice.sh

#!/bin/bash

# chkconifg: 2345 66 33
# description: Test Service
#
LOCKFILE=/var/lock/subsys/myservice  # 建立一個鎖檔案,用來判斷指令碼的狀態

mystatus(){
    if [ -e LOCKFILE ]; then
        echo "running..."
    else
        echo "stopped..."
}

usage(){
    echo "`basename $0` {start|stop|restart|status}"
} case $1 in 'start') touch /var/lock/subsys/myservice echo "starting..." ;; 'stop') rm -rf /var/lock/subsys/myservice echo "stopping..." ;; 'restart') echo "restarting..." ;; 'status') mystatus ;; *) usage ;; esac
把指令碼加到系統指令碼的目錄中,並用chkconfig命令讓其在指定的執行級別自動啟動:
cp myservice.sh  /etc/rc.d/init.d/myservice
chkconfig --add myservice
chkconfig --list myservice  # 檢視
chkconfig --level 24 myservice off  關閉myservice在24級別上自動啟動