windows和linux下使用命令查找端口对应的进程pid并杀死进程

windows下命令,8080是要杀死进程的端口,这个命令自己查找端口对应的进程pid,然后kill
for /f "tokens=5" %a in ('netstat -ao^|findstr 8080') do @taskkill /F /PID %a
public static final void windowsRestart(String port, String path, String param)
    throws IOException, DaemonException, InterruptedException
  {
    String cmd = "for /f \"tokens=5\" %a in ('netstat -ao^|findstr " + port + "') do @taskkill /F /PID %a";
    String[] command = { "cmd", "-c", "start", cmd };
    LOG.info(cmd);
    Process pro = Runtime.getRuntime().exec(command);
    pro.waitFor();
    LOG.info("exitValue=" + pro.exitValue());
    Thread.sleep(5000L);
    cmd = "cmd /c start " + path;
    LOG.info(cmd);
    pro = Runtime.getRuntime().exec(cmd);
    pro.waitFor();
    LOG.info("exitValue=" + pro.exitValue());
  }

  public static final void linuxRestart(String port, String path, String param)
    throws IOException, InterruptedException
  {
    String cmd = "kill -9 $(netstat -tlnp|grep " + port + "|awk '{print $7}'|awk -F '/' '{print $1}')";
    String[] command = { "sh", "-c", cmd };
    LOG.info(cmd);
    Process pro = Runtime.getRuntime().exec(command);
    pro.waitFor();
    LOG.info("exitValue=" + pro.exitValue());
    cmd = path;
    LOG.info(cmd);
    pro = Runtime.getRuntime().exec(cmd);
    pro.waitFor();
    LOG.info("exitValue=" + pro.exitValue());
  }

 

### 如何在 Linux 上根据端口杀死进程Linux 中,可以通过一系列命令查找终止占用特定端口进程。以下是具体方法: #### 查找占用指定端口进程 ID (PID) 可以使用 `netstat` 或更现代的 `ss` 命令配合 `lsof` 来找到正在监听某个端口进程。 1. **使用 `netstat` `grep`** 运行以下命令以获取占用目标端口进程信息: ```bash netstat -tulnp | grep ":PortNumber" ``` 此处 `-tulnp` 参数的作用如下: - `-t`: 显示 TCP 协议的相关连接。 - `-u`: 显示 UDP 协议的相关连接。 - `-l`: 列出处于监听状态的服务。 - `-n`: 使用数字形式显示地址端口号。 - `-p`: 显示与套接字关联的程序/进程名称及其 PID[^1]。 2. **使用 `ss` 替代 `netstat`** 如果系统上已弃用 `netstat`,可以用 `ss` 实现相同功能: ```bash ss -tulnp | grep ":PortNumber" ``` 3. **通过 `lsof` 定位进程** 另一种方式是利用 `lsof` 工具定位端口对应进程: ```bash lsof -i :PortNumber ``` 输出会包含该端口所绑定的进程名以及其 PID[^2]。 #### 终止查找出的进程 一旦获得了目标进程PID,则可通过 `kill` 命令结束它: ```bash kill -9 PID ``` 这里的选项 `-9` 表示强制终止信号 SIGKILL。 如果知道的是进程的名字而非确切的 PID,也可以直接依据名字杀掉整个应用实例: ```bash pkill ProcessName ``` 以上就是在 Linux 平台上基于给定端口号去识别且停止相应后台运行任务的方法概述。 ```bash # 示例脚本:自动检测杀死占用8080端口进程 PORT=8080 PID=$(lsof -t -i:$PORT) if [ ! -z "$PID" ]; then echo "Killing process $PID on port $PORT..." kill -9 $PID else echo "No process found listening on port $PORT." fi ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值