美文网首页
启动脚本详解

启动脚本详解

作者: __简单点__ | 来源:发表于2021-01-28 10:57 被阅读0次

#!/bin/bash

AppName=zhaopu.jar

#JVM参数

JVM_OPTS=" -Dspring.profiles.active=dev  -Djasypt.encryptor.password=microservice -Djasypt.encryptor.password=microservice  -Dname=$AppName -Dspring.profiles.active=dev -Duser.timezone=Asia/Shanghai -Xms2048M -Xmx2048M -XX:PermSize=2048M -XX:MaxPermSize=2048M -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps  -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"

APP_HOME=`pwd`

LOG_PATH=$APP_HOME/logs/$AppName.log

if [ "$1" = "" ];

then

    echo -e "\033[0;31m 未输入操作名 \033[0m  \033[0;34m {start|stop|restart|status} \033[0m"

    exit 1

fi

if [ "$AppName" = "" ];

then

    echo -e "\033[0;31m 未输入应用名 \033[0m"

    exit 1

fi

function test()

{

    PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`

        if [ x"$PID" != x"" ]; then

            echo "$AppName is running..."

        else

                java -jar  $JVM_OPTS $AppName

        fi

}

function start()

{

    PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`

if [ x"$PID" != x"" ]; then

    echo "$AppName is running..."

else

nohup java -jar  $JVM_OPTS $AppName > /dev/null 2>&1 &

echo "Start $AppName success..."

fi

}

function stop()

{

    echo "Stop $AppName"

PID=""

query(){

PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`

}

query

if [ x"$PID" != x"" ]; then

kill -TERM $PID

echo "$AppName (pid:$PID) exiting..."

while [ x"$PID" != x"" ]

do

sleep 1

query

done

echo "$AppName exited."

else

echo "$AppName already stopped."

fi

}

function restart()

{

    stop

    sleep 2

    start

}

function status()

{

    PID=`ps -ef |grep java|grep $AppName|grep -v grep|wc -l`

    if [ $PID != 0 ];then

        echo "$AppName is running..."

    else

        echo "$AppName is not running..."

    fi

}

case $1 in

    test)

    test;;

    start)

    start;;

    stop)

    stop;;

    restart)

    restart;;

    status)

    status;;

    *)

esac

1.`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`

(1)grep -v grep:  grep -v 排除信息  即排除 包含grep 的进程

grep本身也是个进程

(2)awk '{print $2}': awk 读取文本指令    即 读取第二列    

总体: 根据应用名称 来获取 服务运行的进程号

2

[x"$PID" != x""] : []  是test命令的简写

x:是为了 防止某些bash脚本编译错误 (字符串空的错) 可以忽略不看他

在 $PID为空时会在某些bash版本中出现编译错误所以运用了shell中的字符抵消原则。

https://blog.csdn.net/qq_32907195/article/details/109308093

3

kill -9   :强制直接杀

kill -15 或 kill -TERM: 这是默认的

程序立刻停止

当程序释放相应资源后再停止

程序可能仍然继续运行

      大部分程序接收到SIGTERM信号后,会先释放自己的资源,然后在停止。但是也有程序可以在接受到信号量后,做一些其他的事情,并且这些事情是可以

      配置的。如果程序正在等待IO,可能就不会立马做出相应。

  也就是说,SIGTERM多半是会被阻塞的、忽略。

https://www.cnblogs.com/liuhouhou/p/5400540.html

相关文章

网友评论

      本文标题:启动脚本详解

      本文链接:https://www.haomeiwen.com/subject/insttltx.html