菜鸟科技网

系统端口查看命令有哪些?

Windows 系统

在 Windows 中,最常用、最核心的命令是 netstatPowerShellGet-NetTCPConnection

系统端口查看命令有哪些?-图1
(图片来源网络,侵删)

netstat 命令 (经典、通用)

netstat 是一个历史悠久的网络状态工具,功能强大。

基本语法:

netstat [-a] [-n] [-o] [-p protocol] [-b]

常用参数组合:

  • 查看所有监听和已建立的连接:

    系统端口查看命令有哪些?-图2
    (图片来源网络,侵删)
    netstat -an
    • -a: 显示所有连接和监听端口。
    • -n: 以数字形式显示地址和端口号,不进行域名解析(速度更快,避免DNS查询失败)。
    • 输出示例:
      TCP    192.168.1.100:5357      104.16.132.229:443       ESTABLISHED
      TCP    0.0.0.0:80              0.0.0.0:0                 LISTENING
      UDP    192.168.1.100:5357      *:*
    • 状态说明:
      • LISTENING: 正在监听,等待连接(如 Web 服务器)。
      • ESTABLISHED: 连接已建立,正在通信。
      • TIME_WAIT: 连接已关闭,等待清理。
      • CLOSE_WAIT: 远程端已关闭连接,本地端尚未关闭。
  • 查看指定端口的占用情况:

    netstat -ano | findstr "端口号"
    • -o: 显示进程 ID (PID)。
    • | findstr "端口号": 管道传递给 findstr 命令,用于筛选特定端口。
    • 示例 (查看 80 端口):
      netstat -ano | findstr ":80"

      输出最后一列的数字就是 PID。

  • 查看指定进程的端口占用:

    netstat -ano | findstr "PID"

    将所有连接及其 PID 列出,然后你可以根据 PID 来查找。

    系统端口查看命令有哪些?-图3
    (图片来源网络,侵删)

PowerShell 命令 (现代、功能强大)

在较新的 Windows 系统中,PowerShell 是更推荐的工具,其输出更易于后续处理。

基本语法:

Get-NetTCPConnection [-State Listening] -LocalPort 端口号

常用命令:

  • 查看所有监听端口:

    Get-NetTCPConnection -State Listening
    • 输出是一个结构化的表格,包含 LocalAddress, LocalPort, RemoteAddress, RemotePort, State, OwningProcess (PID) 等信息。
  • 查看指定端口的占用情况:

    Get-NetTCPConnection -LocalPort 80 -State Listening
    • 这比 netstat 的写法更直观。
  • 结合 Get-Process 查看进程名:

    Get-NetTCPConnection -LocalPort 80 | Get-Process

    这个命令可以直接通过端口查到对应的进程详细信息,非常方便。

任务管理器 (图形化界面)

对于不习惯命令行的用户,任务管理器也可以查看端口。

  1. Ctrl + Shift + Esc 打开任务管理器。
  2. 切换到“性能”选项卡。
  3. 点击左侧的“网络”。
  4. 点击下方的“打开资源监视器”。
  5. 在“资源监视器”中,展开“网络活动” -> “TCP 连接”。
  6. 在这里你可以看到所有 TCP 连接,并可以根据“本地端口”或“PID”进行筛选。

Linux / macOS 系统

在 Linux 和 macOS (基于 Unix) 系统中,ss 是目前推荐使用的命令,因为它比传统的 netstat 更快、信息更全。netstat 仍然可用,但 ss 是首选。

ss 命令 (现代、快速)

基本语法:

ss [选项] [过滤]

常用命令:

  • 查看所有 TCP 和 UDP 端口:

    ss -tuln
    • -t: 只显示 TCP 端口。
    • -u: 只显示 UDP 端口。
    • -l: 只显示监听 (LISTENING) 端口。
    • -n: 以数字形式显示地址和端口,不进行域名解析。
    • 输出示例:
      State      Recv-Q Send-Q Local Address:Port               Peer Address:Port
      LISTEN     0      511          0.0.0.0:80                    0.0.0.0:*
      LISTEN     0      4096             [::]:22                     [::]:*
    • 状态说明:
      • LISTEN: 正在监听。
      • ESTABLISHED: 已建立连接。
      • TIME_WAIT: 等待超时。
      • CLOSED: 已关闭。
  • 查看指定端口的占用情况:

    ss -tuln | grep "端口号"
    • 示例 (查看 80 端口):
      ss -tuln | grep ":80"
  • 查看端口对应的进程:

    ss -tulnp
    • -p: 显示进程 ID (PID) 和名称。
    • 输出示例:
      State      Recv-Q Send-Q Local Address:Port               Peer Address:Port   Process
      LISTEN     0      511          0.0.0.0:80                    0.0.0.0:*        users:(("nginx",pid=1234,fd=6))
    • 从输出中可以直接看到 pid=1234 和进程名 nginx

netstat 命令 (传统、兼容性好)

netstat 在大多数 Linux/macOS 系统上依然可用,其用法与 Windows 类似。

常用命令:

  • 查看所有监听端口:

    netstat -tuln
  • 查看带进程信息的监听端口:

    netstat -tulpn
    • -p: 显示 PID 和程序名。
  • 查看指定端口:

    netstat -tuln | grep ":80"

lsof 命令 (功能极其强大)

lsof (List Open Files) 可以列出系统打开的所有文件,因为在 Unix/Linux 中,一切皆文件,网络端口也是文件。lsof 查看端口非常灵活。

常用命令:

  • 查看指定端口的占用情况:
    lsof -i :端口号
    • 示例 (查看 80 端口):
      lsof -i :80
    • 输出示例:
      COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
      nginx    1234   root    6u  IPv4   12345      0t0  TCP *:http (LISTEN)
      nginx    1235 www-data   6u  IPv4   12345      0t0  TCP *:http (LISTEN)
    • 这个命令清晰地显示了哪个进程 (COMMAND) 和哪个 PID 占用了端口。

如何找到并终止占用端口的进程?

查看端口后,如果发现是未知或不需要的进程占用了端口,你可能需要终止它。

在 Windows 中:

  1. 找到 PID:使用 netstat -ano | findstr "端口号"PowerShell 命令找到 PID。
  2. 结束进程
    • 方法一 (命令行):打开命令提示符 (CMD) 或 PowerShell,使用 taskkill 命令。
      taskkill /F /PID PID号
      • /F: 强制终止。
      • /PID PID号: 替换为实际的 PID。
    • 方法二 (图形界面):打开任务管理器,切换到“详细信息”选项卡,找到对应 PID 的进程,右键点击“结束任务”。

在 Linux / macOS 中:

  1. 找到 PID:使用 ss -tulpn | grep "端口号"lsof -i :端口号 找到 PID。
  2. 结束进程:使用 kill 命令。
    • 普通终止
      kill PID号
    • 强制终止 (如果普通方式无效):
      kill -9 PID号
      • -9SIGKILL 信号,会强制立即终止进程,请谨慎使用。

总结对比

功能/系统 Windows (推荐) Linux / macOS (推荐)
查看所有端口 netstat -anGet-NetTCPConnection ss -tuln
查看监听端口 netstat -anoGet-NetTCPConnection -State Listening ss -tuln
查看指定端口 netstat -ano \| findstr "端口" ss -tuln \| grep "端口"
查看端口进程 netstat -ano (看PID) 或 Get-NetTCPConnection \| Get-Process ss -tulpnlsof -i :端口
终止进程 taskkill /F /PID PID号 kill -9 PID号

希望这份详细的总结能帮助你轻松应对各种端口查看和管理问题!

分享:
扫描分享到社交APP
上一篇
下一篇