这篇文章发布于我的 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. Http、Https请求工具类

    最近在做微信开发,使用http调用第三方服务API,有些是需要https协议,通过资料和自己编码,写了个支持http和https的工具类,经验证可用,现贴出来保留,也供需要的人使用(有不足的地方,也请 ...

  2. SQL常见优化Sql查询性能的方法有哪些?

    常见优化Sql查询性能的方法有哪些? 1.查询条件减少使用函数,避免全表扫描 2.减少不必要的表连接 3.有些数据操作的业务逻辑可以放到应用层进行实现 4.可以使用with as 5.使用“临时表”暂 ...

  3. Vue - 自定义指令

    1.Vue.directive(id,definition)注册一个全局自定义指令,接收两个参数,指令ID以及定义对象 2.钩子函数:将作用域与DOM进行链接,链接函数用来创建可以操作DOM的指令 b ...

  4. 窗体Showmedol 遇到的奇怪异常: cannot make a visible window model

    //窗体Showmedol 遇到的奇怪异常: cannot make a visible window model //背景:ShowModal A窗体,A窗体再ShowModal B窗体:A是透明背 ...

  5. 4.3 多线程进阶篇<中>(GCD)

    更正:队列名称的作用的图中,箭头标注的有些问题,已修正 本文并非最终版本,如有更新或更正会第一时间置顶,联系方式详见文末 如果觉得本文内容过长,请前往本人 “简书” 本文源码 Demo 详见 Gith ...

  6. Codeforces 486E LIS of Sequence 题解

    题目大意: 一个序列,问其中每一个元素是否为所有最长上升子序列中的元素或是几个但不是所有最长上升子序列中的元素或一个最长上升子序列都不是. 思路: 求以每一个元素为开头和结尾的最长上升子序列长度,若两 ...

  7. 【第三课】WEBIX 入门自学-Hello World

    在看官网教程时,入门的例子就是dataTable这个空间.So,遵循官网,一起来看一下入门的DataTable组件: WEB使用时固然是先引入相应的库文件: 代码如下 <html> < ...

  8. MVC Razor视图引擎的入门

    首先我们来说说他的给我们开发者带来那些好处吧: Razor语法易于输入,易于阅读,微软当时是这样定义的:简洁,富有表现力和灵活性,支持所有文本编辑器,强大的智能提示功能,单元测试. Rozor文件类型 ...

  9. HDU Cow Sorting (树状数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2838 Cow Sorting Problem Description Sherlock's N (1  ...

  10. 【Telerik】实现列表单元格中添加复选框,进行状态(是、否)判断

    前台界面: 需求:实现对每条细则是否必备进行判断,必备就勾选,否则不勾选. 首先:要保证列表GridView是可编辑的(IsReadOnly=false) 表格代码 其次:单元格的数据绑定要保证是双向 ...