Skip to content

Commit 78f88ab

Browse files
committed
fix:修改PID获取方式
通过正式提取PID
1 parent bab5d9c commit 78f88ab

File tree

1 file changed

+30
-3
lines changed

1 file changed

+30
-3
lines changed

dongtai-agent/src/main/java/io/dongtai/iast/agent/manager/EngineManager.java

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package io.dongtai.iast.agent.manager;
22

3-
import io.dongtai.iast.agent.*;
3+
import io.dongtai.iast.agent.IastClassLoader;
4+
import io.dongtai.iast.agent.IastProperties;
5+
import io.dongtai.iast.agent.LogCollector;
46
import io.dongtai.iast.agent.fallback.FallbackManager;
57
import io.dongtai.iast.agent.report.AgentRegisterReport;
6-
import io.dongtai.iast.agent.util.*;
8+
import io.dongtai.iast.agent.util.FileUtils;
9+
import io.dongtai.iast.agent.util.HttpClientUtils;
10+
import io.dongtai.iast.agent.util.ThreadUtils;
711
import io.dongtai.iast.common.state.AgentState;
812
import io.dongtai.log.DongTaiLog;
913
import io.dongtai.log.ErrorCode;
@@ -13,6 +17,8 @@
1317
import java.lang.instrument.Instrumentation;
1418
import java.lang.management.ManagementFactory;
1519
import java.util.jar.JarFile;
20+
import java.util.regex.Matcher;
21+
import java.util.regex.Pattern;
1622

1723
/**
1824
* 引擎管理类,负责engine模块的完整生命周期,包括:下载、安装、启动、停止、重启、卸载
@@ -248,11 +254,32 @@ public synchronized boolean uninstall() {
248254

249255
public static String getPID() {
250256
if (PID == null) {
251-
PID = ManagementFactory.getRuntimeMXBean().getName().split("@")[0];
257+
String runtimeName = ManagementFactory.getRuntimeMXBean().getName();
258+
PID = extractPID(runtimeName);
252259
}
253260
return PID;
254261
}
255262

263+
/**
264+
* 通过正则提取runtimeName的PID
265+
* 从开头开始匹配,遇到非数字字符串停止匹配
266+
* @param runtimeName 运行名称通常为PID@HostName
267+
* @return PID
268+
*/
269+
public static String extractPID(String runtimeName){
270+
Pattern pattern = Pattern.compile("^\\d+");
271+
Matcher matcher = pattern.matcher(runtimeName);
272+
273+
//防止极端情况未获取到PID ,设置默认值为0,防止服务端出现问题
274+
String extractedNumber = "0";
275+
if (matcher.find()) {
276+
extractedNumber = matcher.group(); // 提取匹配到的数字
277+
}else {
278+
DongTaiLog.warn("Get PID parsing exception, PID raw data is {}",runtimeName);
279+
}
280+
return extractedNumber;
281+
}
282+
256283
public AgentState getAgentState() {
257284
return this.agentState;
258285
}

0 commit comments

Comments
 (0)