-
Notifications
You must be signed in to change notification settings - Fork 7.6k
Closed
Milestone
Description
" main" #1 prio=5 os_prio=0 tid=0x00007f464c008940 nid=0x2703e runnable [0x00007f4654c02000]
java.lang.Thread.State: RUNNABLE
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:255)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:284)
at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
- locked <0x000000071bdcbb50> (a java.lang.UNIXProcess$ProcessPipeInputStream)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
- locked <0x000000071bdd6010> (a java.io.InputStreamReader)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:161)
at java.io.BufferedReader.readLine(BufferedReader.java:324)
- locked <0x000000071bdd6010> (a java.io.InputStreamReader)
at java.io.BufferedReader.readLine(BufferedReader.java:389)
at com.taobao.arthas.common.ExecutingCommand.runNative(ExecutingCommand.java:61)
at com.taobao.arthas.common.ExecutingCommand.runNative(ExecutingCommand.java:31)
at com.taobao.arthas.common.ExecutingCommand.getAnswerAt(ExecutingCommand.java:102)
at com.taobao.arthas.common.ExecutingCommand.getFirstAnswer(ExecutingCommand.java:87)
at com.taobao.arthas.common.SocketUtils.findTcpListenProcess(SocketUtils.java:53)
at com.taobao.arthas.boot.Bootstrap.main(Bootstrap.java:367)
public static long findTcpListenProcess(int port) {
try {
if (OSUtils.isWindows()) {
String[] command = { "netstat", "-ano", "-p", "TCP" };
List<String> lines = ExecutingCommand.runNative(command);
for (String line : lines) {
if (line.contains("LISTENING")) {
// TCP 0.0.0.0:49168 0.0.0.0:0 LISTENING 476
String[] strings = line.trim().split("\\s+");
if (strings.length == 5) {
if (strings[1].endsWith(":" + port)) {
return Long.parseLong(strings[4]);
}
}
}
}
}
if (OSUtils.isLinux() || OSUtils.isMac()) {
String pid = ExecutingCommand.getFirstAnswer("lsof -t -s TCP:LISTEN -i TCP:" + port);
if (!pid.trim().isEmpty()) {
return Long.parseLong(pid);
}
}
} catch (Throwable e) {
// ignore
}
return -1;
}可以尝试查找 netstat 和 lsof 进程,kill掉。
Metadata
Metadata
Assignees
Labels
No labels