Windows查看服务占用端口
本文以MongoDB为例,其他服务的查看流程类似:
1.查看服务的PID
名词解释:
服务:电脑访问数据库,其实数据库就是一种服务。服务必须要开启后,才能对其进行访问。而电脑开启1个服务,这个服务在电脑中就是1个进程。
PID:process identification的简称,进程识别符,一般是10进制的数字。
在Windows系统中查看服务的PID的方法是打开任务管理器,进入详细信息页面。
如果打开任务管理器时是简略信息页面,点击“详情信息”按钮,如下图所示:
进入 详情信息页面,选择下图红色箭头所示的 服务:
先点击下图红色箭头所示的 名称,会按照服务名称从小到大排序。
例如我们要找 MongoDB服务的 PID,按照顺序往下翻,如下图所示:
从上图可以看出MongoDB服务的PID为 4584。
2.查看PID对应的端口
打开cmd,按Windows+r组合键,在运行窗口中,输入命令cmd,如下图所示:
在 运行窗口中,输入命令cmd,点击“确定”按钮或者按Enter键进入 cmd窗口。
在cmd窗口中输入命令: netstat -ano
运行结果如下图所示:
从上图中可以看出 PID为4584的进程的本地地址为: 127.0.0.1:27017
即 PID为4584的进程占用端口为 27017
3.查找PID对应的端口
查找命令:netstat -ano|findstr "{}"
大括号替换为进程的PID,如下图所示:
4.编写python代码
将上面3步的思路用python代码实现,以后的查看就可以通过运行python代码得出结果。
代码中有2个函数,定义getPid函数用于模糊搜索进程名和其对应的PID,传入参数processName数据类型为字符串;
定义pid2port函数用于获取PID及其占用的IP本地地址和端口,传入参数pip_input的数据类型为字符串或整数。
在命令行中tasklist | find "{}"可以用于模糊查找进程对应的PID,大括号替换为模糊查找内容。
模糊查找进程名含有sql的进程命令:tasklist | find "sql",如下图所示:
import os import re def getPid(processName): cmd_str = 'tasklist | find "%s"' %processName p = os.popen(cmd_str) tasklist_str = p.read() task_list =tasklist_str.split('\n')[:-1] if len(task_list) == 0: print('没有找到该进程') return [] else: process_list = [re.split('\s+',k)[0] for k in task_list] pid_list = [re.split('\s+',k)[1] for k in task_list] result = list(zip(process_list,pid_list)) print('进程和对应的PID:') for i in result: print(i[0], i[1], sep='\t') return result def pid2port(pid_input): pid_input = str(pid_input) p = os.popen('netstat -ano|findstr "%s"' %pid_input) netstat_str = p.read() netstat_list = netstat_str.split('\n')[:-1] pid_list = [re.split(r'\s+',k.strip())[-1] for k in netstat_list] address_list = [re.split(r'\s+',k.strip())[1] for k in netstat_list] port_list = [k.split(':')[-1] for k in address_list] flag = True for pid,address,port in zip(pid_list,address_list,port_list): if pid == pid_input: print('PID为%s的进程本地地址为:%s,端口号为:%s'\ %(pid,address,port)) flag = False if flag: print('PID为%s的进程没有占用端口' %pid_input) if __name__ == '__main__': processName = 'mongo' pid_list = getPid(processName) if len(pid_list) == 1: pid2port(pid_list[0][1]) elif len(pid_list) > 1: pid = input("请输入查找的PID:") pid2port(pid)
如果开启了MongoDB服务,上面一段代码的运行结果如下:
进程和对应的PID: mongod.exe 4584 PID为4584的进程本地地址为:127.0.0.1:27017,端口号为:27017

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
日常开发工作快照(三)
IntelliJ IDEA是java语言的开发集成环境,在业界被公认为最好的java开发工具,没有之一,MyEclipse在它面前绝对是弱爆了,谁用谁知道,唯一的缺点是太占资源,8G内存是标配。衡量一个java工程师的技术水平只要问问他用什么开发工具就知道了,反正哥自己用的是MyEclipse 2015。 1、跳过测试编译:在窗体右侧Maven Projects窗口中点击Execute Maver Goal对话框中输入install或install -DskipTests忽略测试。 2、发布包并上传仓库:在pom.xml文件中修改工程版本号,执行deploy命令参数同上将发布的jar包自动上传至仓库。 3、位scala工程打包:点击菜单file选择Project Structure在选择Artifacts点击“+”符号进行增加操作,在输出方式中选择JAR -> From modules with dependencies ...方式,在Main Class中选择主类,点击OK确定,在菜单中Build中点击Build Artifacts在Action中选择具体的操作行为。 4、设置...
- 下一篇
区块链开发公司谈区块链技术的应用
区块链用数字技术解决了信任问题,解决了信息的真实性、完整性和可追溯性问题,对当下互联网发展非常重要。“之前互联网的信任问题没有很好的解决办法,仍旧是靠一个大公司的主体信用担保,这违背了互联网开放的初心,也不能充分发挥互联网的潜能。” 而区块链技术的出现,让解决信任问题的成本变得极低,从而将会进一步盘活各行各业的活力。 同时,区块链善于解决数据的资产属性问题,而数据是人工智能发展的核心要素。通过区块链,可以更有效地构建一个数据互融互通的生态,进一步促进人工智能的发展。 区块链技术的破坏性力量创新了我们的数据存储方式,允许用户完全控制他们希望在公共场合分享的个人详细信息。利用区块链技术和权力下放的潜力可能是保护我们隐私的关键。 技术进步揭示了通过区块链技术管理我们数据的另一种方式。但这种方法并不是新颖的,事实上,它可以追溯到一些最早的互联网概念。权力下放为我们今天所知的无与伦比的万维网奠定了基础。它也是区块链技术的核心特征。 区块链技术的本质是一个数据库,那么我们能否建立一个这样的数据库,它包罗万象,记录这个世界上每个人的一切活动。那么区块链技术就如同时间和空间的总和,即宇宙。通过宇宙的去...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- MySQL8.0.19开启GTID主从同步CentOS8
- Hadoop3单机部署,实现最简伪集群
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题