美文网首页
运维--简单的应用服务起停脚本

运维--简单的应用服务起停脚本

作者: roywangt | 来源:发表于2019-05-26 11:03 被阅读0次

    原来的应用服务都是通过Dcoker部署的,因为种种原因临时需要把部署到Docker里面的应用服务迁移出来,临时写个脚本管理服务进程的起停,以及状态的简单显示。

    服务进程启动

    应用服务都是基于spring boot框架开发的,启动方式都是一致的,便与写成统一启动命令格式。

    服务进程PID的获取

    获得应用服务进程的PID,用到的shell命令还是那几个老朋友: ps awk grep 。这些命令出镜率很高。
    ps -ef | grep 2 | grep java | awk '{ print2}'
    通过两次grep 基本就能获得到唯一的进程PID了。

    进程状态的获取

    如果想获得更多的进程信息 ,可以通过ps aux 的方式获得更多的信息。

    停止服务进程

    如果想停止这个进程 ,可以通过管道符经PID传递给xargs kill -9

    代码参考

    function managementApp(){
    TIME=`date "+%Y-%m-%d %H:%M:%S"`
    echo "$TIME $3 $1 $2."  | tee -a /opt/logs/apps.log
    
    if [ $3 = 'status' ];
    then 
      PID=`ps -ef | grep $2  | grep java | awk '{ print $2}'`
      if [ ! $PID ];
      then
          echo "$1 $2 not exist"  | tee -a /opt/logs/apps.log
      else       
          ps aux | grep $2   | grep java | awk '{ print "%CPU:"$3"; %MEM:"$4"; RSS:"$6"KB." }' | tee -a /opt/logs/apps.log
      fi
    elif [ $3 = 'stop' ];
    then 
      PID=`ps -ef | grep $2  | grep java | awk '{ print $2}'`
      if [ ! $PID ];
      then
          echo "$1 $2 already stop"  | tee -a /opt/logs/apps.log
      else       
          ps -ef | grep $2  | grep java | awk '{ print $2}' | xargs kill -9
      fi  
    elif [ $3 = 'start' ];
    then 
    nohup java -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -Xms512m -Xmx512m -Xmn192m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC  -jar /opt/$1/$2 --logging.config=/opt/$1/config/logback.xml  --spring.config.location=file:/opt/$1/config/ --spring.profiles.active=dev >>$2.outfile 2>&1 & 
    elif [ $3 = 'restart' ];
    then 
       PID=`ps -ef | grep $2  | grep java | awk '{ print $2}'`
       if [  $PID ];
       then
           ps -ef | grep $2  | grep java | awk '{ print $2}' | xargs kill -9
       fi  
       nohup java -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -Xms512m -Xmx512m -Xmn192m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC  -jar /opt/$1/$2 --logging.config=/opt/$1/config/logback.xml  --spring.config.location=file:/opt/$1/config/ --spring.profiles.active=dev >$2.outfile 2>&1 & 
    elif [ $3 = 'watch' ];
    then 
       PID=`ps -ef | grep $2  | grep java | awk '{ print $2}'`
       if [ ! $PID ];
       then
            echo "Warning. $1 $2 not exist.Must start this app."  | tee -a /opt/logs/apps.log
            nohup java -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -Xms512m -Xmx512m -Xmn192m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC   -jar /opt/$1/$2 --logging.config=/opt/$1/config/logback.xml  --spring.config.location=file:/opt/$1/config/ --spring.profiles.active=dev >> $2.outfile 2>&1 & 
       else 
           echo "$1 $2 is normal. "  | tee -a /opt/logs/apps.log
           ps aux | grep $2   | grep java | awk '{ print "%CPU:"$3"; %MEM:"$4"; RSS:"$6$6"KB." }' | tee -a /opt/logs/apps.log
       fi  
      
    else 
       manual
    fi
    }
    
    

    相关文章

      网友评论

          本文标题:运维--简单的应用服务起停脚本

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