簡易shell腳本啟動jar包


 

可參考博客:

 

#!/bin/bash

APP_NAME=sb_security-0.0.1-SNAPSHOT.jar

usage() {
    echo "case: sh run.sh [start|stop|restart|status]"
    echo "請類似這樣執行 ./*.sh start   or  ./*sh restart"
    exit 1
}

# 判斷當前服務是否已經啟動的函數
is_exist(){
    echo "執行 is_exist 方法"
    pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' ` #根據ps 命令查詢當前服務的進程號 賦值給pid"
    if [ -z "${pid}" ]; then #判斷pid是否為空
        echo "pid 等於null"
        return 1
    else
        echo "pid 不等於null"
        return 0
    fi
}


start(){
    is_exist
    if [ $? -eq "0" ]; then    # [$? -eq "0"] 說明pid不等於空 說明服務正在運行中,將進程號打印出來
        echo "${APP_NAME} running. pid=${pid}"
    else
        nohup java -jar ../lib/$APP_NAME > log.file 2>log.error &  # 說明pid為空 執行java -jar 命令啟動服務
        echo "${APP_NAME} started"
    fi
}


stop(){
    echo "執行 stop 方法"
    is_exist
    if [ $? -eq "0" ]; then    # [$? -eq "0"] 說明pid不等於空 說明服務正在運行中,將進程號殺死
        kill -9 $pid
        echo "${pid} stopped"
    else
        echo "${APP_NAME} not running"
    fi
}


status(){
    echo "執行 status 方法"
    is_exist
    if [ $? -eq "0" ]; then
        echo "${APP_NAME} running. Pid is ${pid}"
    else
        echo "${APP_NAME} not running"
    fi
}


# 重啟命令其實就是先執行關閉命令 再執行重啟命令
restart(){
    stop
    start
}


# 這里的$1 取的是當前輸入命令 的第二個參數 ./start.sh start
case "$1" in
    "start")
        start
        ;;
    "stop")
        stop
        ;;
    "status")
        status
        ;;
    "restart")
        restart
        ;;
    *)
    usage
    ;;
esac

 

case "$1"   取第二個參數 即./run.sh start 中的start
輸入./run.sh start 則會調用 start函數

is_exist函數

pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' ` #取服務的進程號 賦值給pid

  if [ -z "${pid}" ]; then#判斷pid是否為空
    return 1
else
    return 0
fi


is_exist
if [ $? -eq "0" ]; then  # $? 取最后運行的命令的結束代碼[返回值], 判斷is_exist返回值與 0比較

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM