kill 上线
This commit is contained in:
parent
9dddeeccf8
commit
3bec2895b1
|
@ -1,10 +1,12 @@
|
||||||
package org.aohe.core.swing;
|
package org.aohe.core.swing;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.aohe.core.utils.CommandUtils;
|
||||||
import org.aohe.core.web.SocketFactory;
|
import org.aohe.core.web.SocketFactory;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class MainWindow extends JFrame {
|
public class MainWindow extends JFrame {
|
||||||
|
@ -55,6 +57,7 @@ public class MainWindow extends JFrame {
|
||||||
startButton.addActionListener(e -> {
|
startButton.addActionListener(e -> {
|
||||||
startButton.setEnabled(false);
|
startButton.setEnabled(false);
|
||||||
stopButton.setEnabled(true);
|
stopButton.setEnabled(true);
|
||||||
|
CommandUtils.killUsedPort("8997");
|
||||||
initSocket();
|
initSocket();
|
||||||
setView("服务已打开...");
|
setView("服务已打开...");
|
||||||
serviceStatus = true;
|
serviceStatus = true;
|
||||||
|
@ -125,6 +128,11 @@ public class MainWindow extends JFrame {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean checkPort(String port){
|
||||||
|
List<CommandUtils.LsofInfo> lsofInfos = CommandUtils.findPort(port);
|
||||||
|
return !lsofInfos.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
public static void setView(String msg){
|
public static void setView(String msg){
|
||||||
if(logTextArea != null){
|
if(logTextArea != null){
|
||||||
logTextArea.append(msg +"\n");
|
logTextArea.append(msg +"\n");
|
||||||
|
|
|
@ -2,6 +2,8 @@ package org.aohe.core.utils;
|
||||||
|
|
||||||
import cn.hutool.core.util.RuntimeUtil;
|
import cn.hutool.core.util.RuntimeUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.ToString;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
@ -59,4 +61,57 @@ public class CommandUtils {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void killUsedPort(String port){
|
||||||
|
List<LsofInfo> lsofInfos = findPort(port);
|
||||||
|
for(LsofInfo lsofInfo : lsofInfos){
|
||||||
|
destroy(lsofInfo.getPid());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<LsofInfo> findPort(String port){
|
||||||
|
String exec = StrUtil.format("lsof -i:{}",port);
|
||||||
|
String s = execForStrUtf8Sudo(exec);
|
||||||
|
return parseCommandOutput(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void destroy(String pid){
|
||||||
|
String exec = StrUtil.format("kill -9 {}",pid);
|
||||||
|
execForStrUtf8Sudo(exec);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* lsof 格式化
|
||||||
|
* @param output s
|
||||||
|
* @return list
|
||||||
|
*/
|
||||||
|
public static List<LsofInfo> parseCommandOutput(String output) {
|
||||||
|
List<LsofInfo> processInfos = new ArrayList<>();
|
||||||
|
String[] lines = output.split("\n");
|
||||||
|
if(lines.length <= 1){
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 1 ; i < lines.length ; i ++) {
|
||||||
|
//从第一行开始
|
||||||
|
String[] parts = lines[i].trim().split("\\s+");
|
||||||
|
if (parts.length < 6) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
LsofInfo processInfo = new LsofInfo();
|
||||||
|
processInfo.setPid(parts[1]);
|
||||||
|
processInfo.setType(parts[4]);
|
||||||
|
|
||||||
|
processInfos.add(processInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
return processInfos;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@ToString
|
||||||
|
public static class LsofInfo {
|
||||||
|
private String pid;
|
||||||
|
private String type;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,18 +1,11 @@
|
||||||
package org.aohe.core.utils;
|
package org.aohe.core.utils;
|
||||||
|
|
||||||
import cn.hutool.core.net.Ipv4Util;
|
|
||||||
import cn.hutool.core.net.NetUtil;
|
import cn.hutool.core.net.NetUtil;
|
||||||
import org.aohe.core.sane.utils.SaneSessionUtils;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.net.*;
|
import java.net.*;
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
import java.util.List;
|
|
||||||
import java.util.concurrent.ExecutorService;
|
|
||||||
import java.util.concurrent.LinkedBlockingQueue;
|
|
||||||
import java.util.concurrent.ThreadPoolExecutor;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
public class SystemUtils {
|
public class SystemUtils {
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue