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

原来的应用服务都是通过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
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容