当前位置: 首页 > news >正文

shell脚本部署springboot

#!/bin/bashecho "$1 jar包名称,$2 运行环境 " echo "====reload jar: $1 env: $2 ==== " if [ -z $1 ];thenecho "请输入jar包名称......."
elseecho "停止开始......."ID=`ps -ef | grep "$1" | grep -v "grep" | grep -v "reload.sh" | awk '{print $2}'`echo $IDfor id in $IDdokill -9 $idecho "killed $id"donesleep 2secho "停止成功......."echo "start $1"nohup java -Xms2048M -Xmx2048M -jar $1  --spring.profiles.active=$2  >/dev/null 2>&1 &echo "sucess"
fi

命令解析:

ps -ef | grep "hzz-ha-1.0-SNAPSHOT.jar" | grep -v "grep" | grep -v "reload.sh" | awk '{print $2}'

这条命令的作用是查找并输出运行指定jar包的进程ID,其中:

- `ps -ef`:列出所有进程信息

- `grep "hzz-ha-1.0-SNAPSHOT.jar"`:过滤包含该jar包名的进程

- `grep -v "grep"`:过滤掉grep自己的进程(第一层grep产生的进程信息)

- `grep -v "reload.sh"`:过滤掉运行这个脚本本身的进程,脚本名称:reload.sh

- `awk '{print $2}'`:打印出进程的PID,也就是命令的第二列

所以它通过两层过滤:

1. 第一层过滤找到包含指定jar包名的进程

2. 第二层过滤排除grep和脚本本身进程

最后用awk仅打印进程的PID。

这样可以准确定位到运行该jar的进程ID,而不会将grep和脚本本身也当成目标进程杀死。

整条命令实现了精确的进程搜索与过滤。

ID=`ps -ef | grep "$1" | grep -v "grep" | grep -v "reload.sh" | awk '{print $2}'`echo $IDfor id in $IDdokill -9 $idecho "killed $id"donesleep 2secho "停止成功......."

这段脚本代码是用于停止指定名称的Java进程,关键步骤解析如下:

1. 使用ps和grep查找指定名称进程的所有PID,并保存到变量ID中

2. 打印出找到的PID

3. 用for循环遍历PID列表

4. 对每个PID执行kill -9操作,强制停止该进程

5. 打印已停止的进程ID信息

6. sleep 2秒,留出停止进程的时间

7. 打印“停止成功”信息

这样通过先获取PID列表,然后循环终止进程,可以实现批量停止进程的效果。

for循环可以处理PID变量包含多个PID的情况,确保都会被停止,避免漏掉某些进程没有被结束。

使用:

./reload.sh xxx.jar dev

http://www.lryc.cn/news/106003.html

相关文章:

  • 每日一道面试题之Iterator 和 ListIterator 有什么区别?
  • 基于图像形态学处理的停车位检测matlab仿真
  • 【网络编程】同步IO/异步IO
  • 五分钟理解NIO与BIO
  • Python数据可视化工具——Pyecharts
  • cjson常用API使用总结
  • Shell脚本学习-case语句开发rsync服务的脚本
  • 使用docker部署一个jar项目
  • 【Linux命令200例】tee将输入内容输出到屏幕和文件
  • 使用Vue+CSS实现汉堡图标过渡为叉号图标,有点意思
  • python面试题【题目+答案】
  • Rocky(centos) jar 注册成服务,能开机自启动
  • 科大讯飞-鸟类分类挑战赛-测试【1】
  • 两行CSS让页面提升渲染性能
  • UniApp中tabbar设置了position: fixed以及bottom:0后出现一条缝隙,看到了后面的内容
  • 设计模式行为型——责任链模式
  • Xamarin.Android中Intent的使用
  • matplotlib绘制方波圆周分解动画
  • vue3+ts 实现枚举
  • 【Python】5分钟了解11个最佳的Python编译器和解释器
  • 如何安装、部署、启动Jenkins
  • sqlalchemy flask长时间未使用 导致数据库连接失效
  • Ubuntu 20.04 系统或图像界面卡死或完全无响应处理方法
  • Linux编辑器 - vim使用
  • 【Windows】磁盘快捷修复
  • Java 线程的多种状态
  • AI绘画| 迪士尼风格|可爱头像【附Midjourney提示词】
  • 【浪费了我两个小时时间】Microsoft store无法加载页面0x80131500
  • 【动态规划】子序列系列
  • URL存储解锁数据管理的新思路,重新定义数据传输与共享(@vue/repl)