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命令等方式判断服务是否停止,根据业务不同去动态选择