利用netstat查看PC的端口占用情况

有时候启动系统时发现端口被占用导致启动失败,如何能快速找到是哪个进程占用了我们的端口呢?其实只要简单两步就OK
比如我的程序启动时需要监听8888端口。

第一步:根据端口查找相关的进程

需要用到natstat 命令,执行netstat /? 看看具体的帮助
 

C:\Users\Administrator>netstat /?

显示协议统计和当前 TCP/IP 网络连接。

NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-t] [interval]

  -a            显示所有连接和侦听端口。
  -b            显示在创建每个连接或侦听端口时涉及的可执行程序。
                在某些情况下,已知可执行程序承载多个独立的
                组件,这些情况下,显示创建连接或侦听端口时涉
                及的组件序列。此情况下,可执行程序的名称
                位于底部[]中,它调用的组件位于顶部,直至达
                到 TCP/IP。注意,此选项可能很耗时,并且在您没有
                足够权限时可能失败。
  -e            显示以太网统计。此选项可以与 -s 选项结合使用。
  -f            显示外部地址的完全限定域名(FQDN)。
  -n            以数字形式显示地址和端口号。
  -o            显示拥有的与每个连接关联的进程 ID。
  -p proto      显示 proto 指定的协议的连接;proto 可以是下列任
                何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s 选
                项一起用来显示每个协议的统计,proto 可以是下列任
                何一个: IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP
                或 UDPv6。
  -r            显示路由表。
  -s            显示每个协议的统计。默认情况下,显示
                IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6
                的统计;-p 选项可用于指定默认的子网。
  -t            显示当前连接卸载状态。
  interval      重新显示选定的统计,各个显示间暂停的间隔秒数。
                按 CTRL+C 停止重新显示统计。如果省略,则 netstat
                将打印当前的配置信息一次。


C:\Users\Administrator>

 执行netstat -ano |find ":8888" 查询占用这个端口的进程

C:\Users\Administrator>netstat -ano |find ":8888"
  TCP    0.0.0.0:8888           0.0.0.0:0              LISTENING       41076
  TCP    [::]:8888              [::]:0                 LISTENING       41076

C:\Users\Administrator>

可以看已经查询到是41076这个进程在监听8888这个端口

第二步:根据进程PID杀死进程
需要用到taskkill命令,执行taskkill  /?看看具体的帮助

C:\Users\Administrator>taskkill /?

TASKKILL [/S system [/U username [/P [password]]]]
         { [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]

描述:
    使用该工具按照进程 ID (PID) 或映像名称终止任务。

参数列表:
    /S    system           指定要连接的远程系统。

    /U    [domain\]user    指定应该在哪个用户上下文执行这个命令。

    /P    [password]       为提供的用户上下文指定密码。如果忽略,提示
                           输入。

    /FI   filter           应用筛选器以选择一组任务。
                           允许使用 "*"。例如,映像名称 eq acme*

    /PID  processid        指定要终止的进程的 PID。
                           使用 TaskList 取得 PID。

    /IM   imagename        指定要终止的进程的映像名称。通配符 '*'可用来
                           指定所有任务或映像名称。

    /T                     终止指定的进程和由它启用的子进程。

    /F                     指定强制终止进程。

    /?                     显示帮助消息。

筛选器:
    筛选器名      有效运算符                有效值
    -----------   ---------------           -------------------------
    STATUS        eq, ne                    RUNNING |
                                            NOT RESPONDING | UNKNOWN
    IMAGENAME     eq, ne                    映像名称
    PID           eq, ne, gt, lt, ge, le    PID 值
    SESSION       eq, ne, gt, lt, ge, le    会话编号。
    CPUTIME       eq, ne, gt, lt, ge, le    CPU 时间,格式为
                                            hh:mm:ss。
                                            hh - 时,
                                            mm - 分,ss - 秒
    MEMUSAGE      eq, ne, gt, lt, ge, le    内存使用量,单位为 KB
    USERNAME      eq, ne                    用户名,格式为 [domain\]user
    MODULES       eq, ne                    DLL 名称
    SERVICES      eq, ne                    服务名称
    WINDOWTITLE   eq, ne                    窗口标题

    说明
    ----
    1) 只有在应用筛选器的情况下,/IM 切换才能使用通配符 '*'。
    2) 远程进程总是要强行 (/F) 终止。
    3) 当指定远程机器时,不支持 "WINDOWTITLE" 和 "STATUS" 筛选器。

例如:
    TASKKILL /IM notepad.exe
    TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
    TASKKILL /F /IM cmd.exe /T
    TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
    TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe
    TASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM *
    TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"

尝试使用taskkill /PID 41076 终结这个进程

C:\Users\Administrator>taskkill /PID 41076
错误: 无法终止 PID 为 41076 的进程。
原因: 只能强行终止这个进程(带 /F 选项)。

C:\Users\Administrator>taskkill   /F /PID 41076
成功: 已终止 PID 为 41076 的进程。

C:\Users\Administrator>

但是无法直接关闭这个进程,提示需要带/F参数,因此使用taskkill   /F /PID 41076可以成功终结这个进程。

然后重新启动我们自己的程序问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值