Windows下查看系统端口占用和禁用

1、Windows平台
在windows命令行窗口下执行:
1.查看所有的端口占用情况
C:\Users\user>netstat -ano

活动连接

  协议     本地地址                         外部地址                   状态                       PID

  TCP    127.0.0.1:3000         0.0.0.0:0              LISTENING       2812

  TCP    127.0.0.1:3000         127.0.0.1:61738        ESTABLISHED     2812

  TCP    127.0.0.1:3000         127.0.0.1:61740        ESTABLISHED     2812

  TCP    127.0.0.1:61738        127.0.0.1:3000         ESTABLISHED     4028


2.查看指定端口的占用情况

C:\Users\user>netstat -aon|findstr "3000"

  TCP    127.0.0.1:3000         0.0.0.0:0              LISTENING       2812

  TCP    127.0.0.1:3000         127.0.0.1:61738        ESTABLISHED     2812

  TCP    127.0.0.1:3000         127.0.0.1:61740        ESTABLISHED     2812


3.禁用端口

C:\Users\user>taskkill /pid 2812 /F

成功: 已终止 PID 为 2812 的进程。


4.查看PID对应的进程
C:\>tasklist|findstr "3000"

 映像名称                       PID 会话名              会话#       内存使用
 ========================= ======== ================
  tor.exe                     3000 Console                    16,064 K

P:很清楚吧,tor占用了你的端口。

### Windows CMD 查看释放被占用端口 #### 查看占用端口Windows 系统中,可以通过 `netstat` 命令查看当前系统的网络连接状态以及哪些进程占用了指定端口。具体命令如下: ```bash netstat -ano | findstr [你的端口号] ``` 例如,如果要查找被占用的 8080 端口,可以运行以下命令: ```bash netstat -ano | findstr 8080 ``` 此命令会返回类似于以下的结果: ``` TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 1234 ``` 其中最后一列显示的是占用端口的进程 ID (PID),即此处为 `1234`[^1]。 --- #### 找到并终止占用端口的进程 一旦找到占用目标端口的 PID,就可以通过 `taskkill` 命令强制结束该进程。以下是具体的命令格式: ```bash taskkill /PID [进程ID] /F /T ``` 例如,对于上述例子中的 PID `1234`,执行以下命令即可终止该进程及其子进程: ```bash taskkill /PID 1234 /F /T ``` 参数说明: - `/PID`: 指定要终止的进程 ID。 - `/F`: 强制关闭进程。 - `/T`: 同时终止与此进程关联的所有子进程[^2]。 --- #### 特殊情况:系统进程占用端口 有时可能会遇到某些特殊端口(如 80 或 443)被操作系统的核心服务(如 NT Kernel & System, PID=4)占用。这种情况下无法直接使用 `taskkill` 来停止这些核心服务,因为它们通常是系统的关键组件。解决方案通常有以下几种方式之一: 1. **更改应用程序使用的端口**: 修改应用配置文件以避免冲突。 2. **禁用相关服务**: - 对于 HTTP 协议,默认可能由 IIS 或其他 Web 服务器绑定了 80 443 端口。可以在服务管理器 (`services.msc`) 中停用或重新配置这些服务。 - 使用 PowerShell 运行以下脚本来解除特定监听端口的绑定: ```powershell netsh int ipv4 delete excludedportrange protocol=tcp startport=[起始端口] numberofports=[数量] ``` 例如,移除从 80 开始的一个 TCP 端口范围: ```powershell netsh int ipv4 delete excludedportrange protocol=tcp startport=80 numberofports=1 ``` 注意,在修改系统级别的设置前需谨慎评估风险,并确保有足够的权限[^3]。 --- #### 总结代码示例 以下是完整的流程代码示例用于检查释放端口: ```batch @echo off setlocal enabledelayedexpansion :: 输入需要检测的端口号 set /p port="请输入需要检查的端口号: " :: 查询哪个进程正在使用该端口 for /f "tokens=5" %%a in ('netstat -ano ^| findstr :%port%') do ( set pid=%%a ) if defined pid ( echo 端口 %port% 正在被 PID !pid! 的进程占用. :: 终止该进程 taskkill /PID !pid! /F /T if errorlevel 1 ( echo 失败: 无法终止 PID !pid! 的进程. ) else ( echo 成功: 已终止 PID !pid! 的进程. ) ) else ( echo 端口 %port% 当前未被任何进程占用. ) pause ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值