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

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

作者: 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
}

相关文章

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

    原来的应用服务都是通过Dcoker部署的,因为种种原因临时需要把部署到Docker里面的应用服务迁移出来,临时写个...

  • crontab定时清理文件,java日志,es记录等

    简单运维 开发环境硬件配置小 , 经常要清理空间 . 写个简单的清理脚本去运维 . 清理java日志 . 清理 g...

  • Shell入门

    后台开发过程中,不可避免的会使用到shell,对于一些复杂的脚本当然有运维处理,但是一些简单的脚本总不能老是让运维...

  • linux: 常用shell脚本珍藏

    我们在运维中,尤其是linux运维,都知道脚本的重要性,脚本会让我们的 运维事半功倍,所以学会写脚本是我们每个li...

  • 从DevOps到AIOps,阿里如何实现智能化运维? | 技术贴

    背景 随着搜索业务的快速发展,搜索系统都在走向平台化,运维方式在经历人肉运维,脚本自动化运维后最终演变成DevOp...

  • Golang 运维脚本

    记录编译工具代码 Makefile替换binary路径使用 记录上传测试环境工具代码 替换本地ip为远端ip 和 ...

  • 运维脚本常用

    标准输出显示文本名以及行号: !/usr/bin/env python3 import fileinput wit...

  • 运维常用脚本

    Nginx日志日志割接及压缩 创建key用户登陆 用户名和密码一致,首次登陆会强制改密码(先输入当前密码,然后输入...

  • Python服务启动脚本

    关于服务的启停有很多种办法(自动化运维工具,或者自己开发的运维系统)。下面是一个简单的脚本自启shell。 把以下...

  • 程序员必知必会的那些邪恶的脚本

    前言 程序员必须掌握一定的运维知识。本文通过一些邪恶,搞破坏的方式。教会你一些危险的脚本操作。 附赠 运维意识与运...

网友评论

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

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