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命令等方式判断服务是否停止,根据业务不同去动态选择
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)