6.综合运用

把之前的一些命令串一下,简单写一个漏洞百出的kill脚本

#!/bin/bash

#定义一个全局变量,用于存放服务的进程
processNum
#定义个函数,用于获得进程,并将进程赋值给上面定义的变量
#这个函数逻辑为:
#	1.通过jps -l命令,获得所有运行的java进程
#	2.通过awk命令,查询jar包叫 “project-0.0.1-SNAPSHOT.jar”的(此处可改成各种正则条件匹配)
#	3.通过cut命令,根据“ ”切分awk匹配出来的记录,然后获得进程
function checkProcessNum()
{
        processNum=$(jps -l | awk -F " " '/project-0.0.1-SNAPSHOT.jar/' | cut -d " " -f 1)
}
#调用一下函数,获得进程
checkProcessNum

echo "当前运行进程号为:"$processNum"执行kill命令"

#执行kill命令,当然,这块应该再加个if判断进程是否存在更好
kill $processNum

echo "kill命令已执行,循环检查是否正常停止"
#isDown:0:服务未停 1:服务已停
isDown=0

#循环检查是否停止,因为可能有线程还未执行完,无法停止
while [ $isDown -eq 0 ]
        do
          echo "每隔1秒查询下项目端口是否存在,存在说明还没停止"
          sleep 1s
          #每等待1秒调用函数查询进程是否存在
          checkProcessNum

          if [ ! $processNum ]
                then
                #进程终止了,停止循环
                        echo "服务停止了"
                        isDown=1
          elif [  $processNum ]
                then
                        echo "服务还在运行中"
          fi
          done

echo "服务已停止"

当然也可通过查询系统日志停止的关键字、Ping命令等方式判断服务是否停止,根据业务不同去动态选择

posted @ 2022-03-27 15:40  RollBack2010  阅读(43)  评论(0编辑  收藏  举报