溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Shell如何操作開發(fā)企業(yè)級服務(wù)啟動腳本

發(fā)布時間:2020-05-07 14:30:50 來源:億速云 閱讀:233 作者:三月 欄目:MySQL數(shù)據(jù)庫

本文主要給大家介紹Shell如何操作開發(fā)企業(yè)級服務(wù)啟動腳本,文章內(nèi)容都是筆者用心摘選和編輯的,具有一定的針對性,對大家的參考意義還是比較大的,下面跟筆者一起了解下Shell如何操作開發(fā)企業(yè)級服務(wù)啟動腳本吧。 

說明:

MySQL啟動命令為:

/bin/sh mysqld_safe --pid-file=$mysqld_pid_file_path 2>&1 >/dev/null &

停止命令邏輯腳本為:

mysqld_pid=`cat "$mysqld_pid_file_path"`
if (kill -0 $mysqld_pid 2>/dev/null)
  then
    kill $mysqld_pid
    sleep 2
fi

請完成MySQL啟動腳本的編寫,并實現(xiàn)可以使用chkconfig配置開機(jī)自啟動。

要求:用函數(shù),case語句、if語句等實現(xiàn)。

Shell如何操作開發(fā)企業(yè)級服務(wù)啟動腳本

解答:此題的技巧適合絕大多數(shù)啟動腳本,例如:rsync,nginx等,僅以MySQL為例介紹思路。

簡單、易用、高效、專業(yè)

#!/bin/bash
# chkconfig: 2345 64 36
# description: MySQL startup
# Author:oldboy
# Blog:http://oldboy.blog.51cto.com
# Time:2017-07-07 09:24:34
# Name:mysqld
# Version:V1.0
# Description:This is a test script.
[ -f /etc/init.d/functions ] && source /etc/init.d/functions
bindir="/application/mysql/bin"
datadir="/application/mysql/data"
mysqld_pid_file_path="/application/mysql/`hostname`.pid"
PATH="/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin" #此步對開機(jī)啟動及定時啟動及其關(guān)鍵。
export PATH
return_value=0


# Lock directory.
lockdir='/var/lock/subsys'
lock_file_path="$lockdir/mysql"

log_success_msg(){ 
    echo " SUCCESS! $@" # 注意函數(shù)的縮進(jìn),下同,也是專業(yè)的表現(xiàn),可放到functions里。
}   
log_failure_msg(){     
    echo " ERROR! $@"
}  

# Start Func
start(){
    # Start daemon
    echo "Starting MySQL"
    if test -x $bindir/mysqld_safe  # 啟動文件是否可執(zhí)行。
    then
        $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path"  >/dev/null &
        return_value=$? # 是否處理好返回值是區(qū)別腳本是否專業(yè)規(guī)范的關(guān)鍵。
        sleep 2

        # Make lock for CentOS
        if test -w "$lockdir"   # 鎖目錄是否可寫。
        then
            touch "$lock_file_path"  # 創(chuàng)建鎖文件。
        fi
        exit $return_value
    else
        log_failure_msg "Couldn't find MySQL server ($bindir/mysqld_safe)"
    fi
}
# Stop Func
stop(){
    if test -s "$mysqld_pid_file_path" # 是否PID文件存在并大小大于0。
    then
        mysqld_pid=`cat "$mysqld_pid_file_path"`

        if (kill -0 $mysqld_pid 2>/dev/null) # 檢查PID對應(yīng)的進(jìn)程是否存在。
        then
            echo "Shutting down MySQL"
            kill $mysqld_pid  # 不能帶-9,否則后果自負(fù)。
            return_value=$?
            sleep 2
        else
            log_failure_msg "MySQL server process #$mysqld_pid is not running!"
            rm -f "$mysqld_pid_file_path"
        fi
        # Delete lock for Oldboy's CentOS
        if test -f "$lock_file_path"
        then
            rm -f "$lock_file_path"
        fi
        exit $return_value
    else
        log_failure_msg "MySQL server PID file could not be found!"
    fi
}
case "$1" in
    start)            
        start
        ;;
    stop)
        stop
        ;;
    restart)
        if $0 stop; then
           $0 start
        else
           log_failure_msg "Failed to stop running server, so refusing to try to start."
           exit 1
        fi
        ;;

    *)
        echo "Usage: $0  {start|stop|restart}"
        exit 1
esac
exit $return_value #是否處理好返回值是區(qū)別腳本是否專業(yè)規(guī)范的關(guān)鍵。

看完以上關(guān)于Shell如何操作開發(fā)企業(yè)級服務(wù)啟動腳本,很多讀者朋友肯定多少有一定的了解,如需獲取更多的行業(yè)知識信息 ,可以持續(xù)關(guān)注我們的行業(yè)資訊欄目的。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI