热更新-arthas + jenkins/Bshell实现
1.首先下载相关软件
下载 jenkins.war arthas-boot.jar BathShell
2.启动arthas 启动jenkin 在war包目录下打开命令界面
后输入 java -jar jenkins.war 回车执行
看到启动成功后,完成如果中间出现了一些报错,不用惊慌大多数都是因为版本问题某些插件没下载成功导致的。我们只需要关注自己需要的插件即可。
http://localhost:8080/
正常下载安装都是傻瓜式的,默认端口8080,然后我们打开网址
4.点击设置,配置linux服务器相关的ip 密码等
下载相关插件,我的插件都是单独网址下载的,因为有些插件已经不让下载了,下架了
主要下载这个publish-over-shh.hpi 因为我们要配置操作jenkins。
下载好的文件,通过下图上传
下滑找到
下面配置看自己需要
最后进入正题,配置linux上部署的服务器信息
下滑
配置linux服务器相关信息 加入秘钥,点击test成功
在上面图片 输入我们要运行的脚本,例如我们要上传本地文件到linux服务器,并执行如下文件,用jenkins操作多台服务器上的多个服实现更新
#!/bin/bash
获取所有 GameServer.jar 进程的 PID
pids=$(ps aux | grep GameServer.jar | grep -v grep | awk '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 2}̲') if [ -z "pids" ]; then
echo “No GameServer.jar processes found.”
exit 1
fi
for pid in $pids; do
echo “Processing PID: $pid”
# 检查 PID 是否有效
if ! kill -0 $pid > /dev/null 2>&1; then
echo “PID $pid is not running or not accessible.”
continue
fi
# 启动 Arthas 并附加到指定的 Java 进程,重新定义类
java -jar arthas-boot.jar $pid -c “redefine /data/tmp/VegetealManager.class”
if [ $? -ne 0 ]; then
echo “Failed to redefine class for PID: $pid”
else
echo “Successfully redefined class for PID: $pid”
fi
done
echo “Finished processing all PIDs.”
5.或者我们下载BatchShell软件
通过勾选可以执行我们的shell命令,例如在linux服务器下执行我们上面编写的.sh文件
上图是把windows本地文件,上传到我们对应的服务器上
记得把上图linux文件存放的路径写上,例如我的各个Linux服务器目录/data/tmp/