如何查看某个端口被哪个进程占用

2025-04发布6次浏览

在操作系统中,端口是网络通信中的重要概念。如果某个端口被占用,而我们不清楚是哪个进程占用了它,可以通过一些工具和命令来查找。以下是如何在不同操作系统(Windows、Linux 和 macOS)中查看某个端口被哪个进程占用的详细步骤。


一、在 Windows 系统中查看端口占用

方法 1:使用 netstat 命令

  1. 打开命令提示符(以管理员身份运行)。

  2. 输入以下命令并按回车:

    netstat -aon | findstr "端口号"
    
    • -a 表示显示所有连接和监听端口。
    • -o 表示显示与每个连接相关的进程 ID (PID)。
    • -n 表示以数字形式显示地址和端口号。
    • findstr "端口号" 用于过滤指定的端口。
  3. 查看输出结果,找到对应的 PID。

  4. 使用任务管理器或以下命令查找该 PID 对应的进程名称:

    tasklist | findstr "PID"
    

方法 2:使用 PowerShell

  1. 打开 PowerShell。
  2. 输入以下命令:
    Get-NetTCPConnection -LocalPort 端口号 | Select-Object OwningProcess, State, LocalAddress, LocalPort
    

    这将返回占用该端口的进程信息。

  3. 查找对应 PID 的进程名称:
    Get-Process -Id PID
    

二、在 Linux 系统中查看端口占用

方法 1:使用 netstat 命令

  1. 打开终端。

  2. 输入以下命令:

    sudo netstat -tulnp | grep 端口号
    
    • -t 表示显示 TCP 协议。
    • -u 表示显示 UDP 协议。
    • -l 表示显示监听状态的端口。
    • -n 表示以数字形式显示地址和端口号。
    • -p 表示显示占用端口的进程名称和 PID。
  3. 输出结果中可以看到 PID/进程名称。

方法 2:使用 lsof 命令

  1. 打开终端。
  2. 输入以下命令:
    sudo lsof -i :端口号
    

    输出结果会显示占用该端口的进程名称、PID 等信息。

方法 3:使用 ss 命令

  1. 打开终端。

  2. 输入以下命令:

    sudo ss -tuln | grep 端口号
    
    • -t 表示显示 TCP 协议。
    • -u 表示显示 UDP 协议。
    • -l 表示显示监听状态的端口。
    • -n 表示以数字形式显示地址和端口号。
  3. 如果需要查看具体进程信息,可以结合 lsofps 命令。


三、在 macOS 系统中查看端口占用

macOS 是基于 Unix 的系统,因此可以使用与 Linux 类似的命令。

方法 1:使用 lsof 命令

  1. 打开终端。
  2. 输入以下命令:
    sudo lsof -i :端口号
    

    输出结果会显示占用该端口的进程名称、PID 等信息。

方法 2:使用 netstat 命令

  1. 打开终端。
  2. 输入以下命令:
    netstat -anv | grep 端口号
    

    结合 ps 命令查找具体的进程信息:

    ps -p PID
    

四、总结

通过上述方法,我们可以轻松定位某个端口被哪个进程占用。以下是各操作系统推荐的命令汇总:

操作系统推荐命令
Windowsnetstat -aon | findstr "端口号"Get-NetTCPConnection
Linuxnetstat -tulnp | grep 端口号lsof -i :端口号
macOSlsof -i :端口号netstat -anv | grep 端口号