这篇文章发布于我的 github 博客:原文

今天在本地调试 Blog 的时候意外的出现了一些错误:127.0.0.1 4000 端口已经被其他的进程占用了。如何找到占用端口的进程呢?

Configuration file: /_config.yml
Source: .
Destination: ./_site
Generating...
done.
Please add the following to your Gemfile to avoid polling for changes:
gem 'wdm', '>= 0.1.0' if Gem.win_platform?
Auto-regeneration: enabled for '.'
Configuration file: /_config.yml
jekyll 2.4.0 | Error: Permission denied - bind(2) for 127.0.0.1:4000

先手动一步一步来

我们可以使用 netstat 命令查看各种端口的被进程的占用情况,例如,开一个命令行或者 powershell 窗口输入 netstat -ano。就得到了如下的报告。

TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       888
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:1536 0.0.0.0:0 LISTENING 564
TCP 0.0.0.0:1537 0.0.0.0:0 LISTENING 848
TCP 0.0.0.0:1538 0.0.0.0:0 LISTENING 1416
TCP 0.0.0.0:1539 0.0.0.0:0 LISTENING 1892
TCP 0.0.0.0:1540 0.0.0.0:0 LISTENING 732
TCP 0.0.0.0:1569 0.0.0.0:0 LISTENING 724
TCP 0.0.0.0:5357 0.0.0.0:0 LISTENING 4
TCP 127.0.0.1:1575 127.0.0.1:48303 ESTABLISHED 2104
TCP 127.0.0.1:4000 0.0.0.0:0 LISTENING 11476 <= Oops
TCP 127.0.0.1:4012 0.0.0.0:0 LISTENING 10888
TCP 127.0.0.1:4013 0.0.0.0:0 LISTENING 10888

说明一下参数:

  • -a:显示所有链接和侦听端口
  • -n:以数字形式显示地址和端口号而不会去尝试进行外部地址解析,能够显著的提高执行速度
  • -o:显示拥有与每一个链接关联的 PID。其实他还有一个 fancy 的参数 -b 可以直接拿到与指定链接关联的可执行程序的名称。但是这个参数需要管理员权限!

嫌疑人 Get,是一个 PID 为 11476 的进程占用了 4000 端口,除掉他之前先看看到底是谁?这个可以通过 tasklist /svc /FI "PID eq 11476" 搞定。

再说明一下参数:

  • /svc:如果这个进程是一个 Windows 服务的话同时显示这个服务的名称;
  • /FI:使用筛选器对结果进行筛选。

以下是运行结果:

Image Name                PID      Service
========================= ======== ============================================
FoxitProtect.exe 11476 FxService

好的,我昨天刚刚安装了一个 FixitReader。停掉服务,一切搞定。

再来一个自动一点儿的

写个 Powershell 脚本吧:

 param([string] $EndPointPattern)

 $pids = netstat -aon | ?{ $_.contains("$EndPointPattern") } | %{ $_.split(' ', [system.stringsplitoptions]::RemoveEmptyEntries)[4] } | select -unique
$pids | %{ ps -Id $_ }

这里面没有考虑各种乱七八糟的情况,如果要用,请自行增补细节。好了,运行一下吧:

$ .\Search-EndPointProcess.ps1 -EndPointPattern "127.0.0.1:48303"

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id  SI ProcessName
------- ------ ----- ----- ----- ------ -- -- -----------
1047 30 8516 5044 178 2104 0 svchost

不错嘛!

谁占了我的端口 for Windows的更多相关文章

  1. Window I/O 完成端口 (Windows I/O Completion Port (IOCP))

    相关对象 IO EndPoint, 所有支持重叠IO(overlapped IO)的设备,比如文件,Winsock,管道等. IOCP, IO完成端口内核对象,可以使用API CreateIoComp ...

  2. windows查看端口占用 windows端口占用 查找端口占用程序 强制结束端口占用 查看某个端口被占用的解决方法 如何查看Windows下端口占用情况

    windows下查询端口占用情况 ,强制结束端口占用程序 查询8080端口被那个程序占用 如何强制结束windows下端口占用情况? 下面操作在win10下 在控制台执行命令   1.列出所有端口的情 ...

  3. 虚拟机运行docker后映射端口到windows开发机

    1.运行容器(以Oracle-xe-11g为例) 运行容器时先在虚拟机内映射端口 docker run -d -p 9090:8080 -p 1521:1521 wnameless/oracle-xe ...

  4. Tomcat配置远程调试端口(windows、Linux)

    当我们需要定位生产环境问题,而日志又不清晰的情况下,我们可以借助Tomcat提供的远程调试,设置如下: // Linxu系统: apach/bin/startup.sh开始处中增加如下内容: decl ...

  5. 单线程实现同时监听多个端口(windows平台c++代码)

    前言 多年前开发了一套网络库,底层实现采用IOCP(完成端口).该库已在公司多个程序中应用:经过多次修改,长时间检验,已经非常稳定高效. 最近把以前的代码梳理了一下,又加进了一些新的思路.代码结构更加 ...

  6. ssh远程端口转发&&windows系统提权之信息收集&&网安工具分享(部分)

    一.ssh远程端口转发 背景:当我们在渗透过程中,获取到内网的一台仅有内网IP的服务器后,我们可以通过ssh隧道,将内网某个主机的端口进行远程转发 1.网络拓扑图 假设获取的服务器为web服务器,we ...

  7. 查看端口 (windows)

    查看端口 netstat -an |findstr

  8. windows查找端口占用/ 终结端口占用 ------------windows小技巧

    前沿 我是一名小程序员,经常通过一些类似tomcat,jettry 等服务器工具 调试项目.有时候莫名其妙的就会出现 程序关闭不正常的情况!去查端口又死活找不到!最后只能重启电脑 后面,在网上查了一些 ...

  9. windows tcp端口映射或端口转发

    windows tcp端口映射或端口转发 windows内部有一个叫netsh的玩意,可以把tcp端口进行映射或转发,可惜不支持udp.举个例子:一台windows有一个80端口,对外可以访问.另有一 ...

随机推荐

  1. CMD批处理延时启动的几个方法

    批处理延时启动的几个方法 方法一:ping 缺点:时间精度为1秒,不够精确 @echo off @ping 127.0.0.1 -n 6 >nul start gdh.txt 方法二:vbs s ...

  2. jQuery的DOM操作详解

    DOM(Document Object Model-文档对象模型):一种与浏览器, 平台, 语言无关的规则, 使用该接口可以轻松地访问页面中所有的标准组件DOM操作的分类 核心-DOM: DOM Co ...

  3. jQuery九类选择器详解

    (1)基本选择器 <body> <div id="div1ID">div1</div> <div id="div2ID" ...

  4. 连接Linux下 XAMPP集成环境中部署的禅道的数据库MariaDB

    用mysql数据库工具连接linuxmysql环境,但是会遇到连接失败的问题,如下所示: 这就需要涉及到另外的问题了,需要我们打开mysql的连接授权,具体的操作步骤如下: 1)在xshell里进入m ...

  5. 《UML大战需求分析》阅读随笔(三)

    一: 需求中提到的各种业务概念.人物等,经过抽象后都可以视之为类. 平时遇到的人.物,我们将遇到的都是具体的人.物,也就如程序中的对象,是一个实实在在的东西. 当我们分析需求的时候,设计模型的时候,我 ...

  6. python urllib

    在伴随学习爬虫的过程中学习了解的一些基础库和方法总结扩展 1. urllib 在urllib.request module中定义下面的一些方法 urllib.request.urlopen(url,d ...

  7. 【原】iOS学习之tableView的常见BUG

    1.TableView头视图不随视图移动,头视图出现错位 错误原因:tableView的 UITableViewStyle 没有明确的声明 解决方法:在tableView声明的时候明确为 UITabl ...

  8. 【Java】JDK类 CountDownLatch

    一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 用给定的计数 初始化 CountDownLatch.由于调用了 countDown() 方法,所以在当前计数到达 ...

  9. 给li标签添加自定义属性

    给li标签添加属性<ul> <li></li> <li></li> <li></li> <li>< ...

  10. 安卓(android)之实现断点下载功能

    一.建立实体类 1.文件实体类 package com.example.zjw.myapplication.dao; import java.io.Serializable; /** * 预下载文件实 ...