1. 程式人生 > >Linux_自制系統服務啟動指令碼

Linux_自制系統服務啟動指令碼

目錄

前言

在Linux的某些系統服務中,需要自己定製啟動服務的指令碼。通常會使用Cash語句來實現。

Case語句

一般用於程式啟動指令碼
Syntax:

case $1 in
    Param1)
        Commands
        ;;
    Param2)
        Commands
        ;;
    *)
        Commands
    esac

Example:

#!/bin/bash -e
#/bin/bash -e 表示系統發生第一個錯誤時就中止指令碼執行
#每個被chkconfig管理的服務需要在對應的init.d下的指令碼加上兩行或者更多行的註釋。
# chkconfig:35 12 45 #第一行告訴chkconfig預設啟動的執行級以及啟動和停止的優先順序。如果某服務預設不在任何執行級啟動,那麼使用 – 代替執行級。 # description:Service start script #第二行對服務進行描述,可以用\ 跨行註釋。 RETVAL=0 case $1 in start) echo "service starting..." ;; stop) echo "service stopping..." ;; restart) #$0 meating is this one script sh $0 stop || true
# $0 stop || ture 表示出現錯誤時候不想中止的指令 sh $0 start ;; *) echo "input syntax error!" echo "Usage:Is [start|stop|restart]" exit 1 ;; esac echo $RETVAL ###################################SCRIPT END

Apache 啟動指令碼

######################################## Apache 啟動指令碼
#!/bin/bash -e       
[ -f /etc/rc.d/init.d/functions ] && . /etc/rc.d/init.d/functions  
RETVAL=0
#使用變數作為判斷和關聯上下本的載體 httpd="/application/apache/bin/httpd" #使用變數簡化使用指令的決定路徑 start() { $httpd -k start >/dev/null 2>&1 #httpd -k start|restart|graceful|stop|graceful-stop 傳送訊號使httpd啟動、重新啟動或停止 # daemon httpd >/dev/null 2>&1 # 2>&1 將錯誤輸出到正確輸出,即標準輸出和錯誤輸出一起輸出,管道|不通過錯誤輸出 RETVAL=$? [ $RETVAL -eq 0 ] && action "啟動 httpd:" /bin/true ||\ action "啟動 httpd:" /bin/false return $RETVAL } stop() { $httpd -k stop >/dev/null 2>&1 # killproc httpd >/dev/null 2>&1 [ $? -eq 0 ] && action "停止 httpd:" /bin/true ||\ action "停止 httpd:" /bin/false return $RETVAL } case "$1" in start) start #Call function start() ;; stop) stop ;; restart) sh $0 stop sh $0 start ;; *) echo "Format error!" echo $"Usage: $0 {start|stop|restart}" exit 1 ;; esac exit $RETVAL ####################################### SCRIPT END

Postfix service 啟停指令碼

################################ Postfix service 啟停指令碼
#!/bin/bash -e
# chkconfig:35 53 55
# discription:postfix
start() {
        echo "Starting postfix..."
        postfix start &> /dev/null
        echo "OK!"
}
stop() {
        echo -n "stopping postfix..."
        postfix stop &> /dev/null
        echo "OK!"
}
reload() {
        echo -n "Loading postfix configure file"
        postfix reload &> /dev/null
        echo "OK!"
}
status() {
        postfix status &> /dev/null
        if [ $? -eq 0 ]
        then echo "running!"
        else echo "stop!"
        if
}
help() {
        echo "syntax error!"
        echo "Uasge:Is [start|stop|restart|reload|status]"
}
case $1 in
start)
        $1
        ;;
stop)
        $1
        ;;
restart)
        stop
        start
        ;;
reload)
        $1
        ;;
status)
        $1
        ;;
*)
        help
        ;;
esac
################################SCRIPT END