美文网首页
Windows查看服务占用端口

Windows查看服务占用端口

作者: 潇洒坤 | 来源:发表于2018-08-10 10:31 被阅读49次

本文以MongoDB为例,其他服务的查看流程类似:

1.查看服务的PID

名词解释:
服务:电脑访问数据库,其实数据库就是一种服务。服务必须要开启后,才能对其进行访问。而电脑开启1个服务,这个服务在电脑中就是1个进程。
PID:process identification的简称,进程识别符,一般是10进制的数字。
在Windows系统中查看服务的PID的方法是打开任务管理器,进入详细信息页面。
如果打开任务管理器时是简略信息页面,点击“详情信息”按钮,如下图所示:

image.png
进入详情信息页面,选择下图红色箭头所示的服务
image.png
先点击下图红色箭头所示的名称,会按照服务名称从小到大排序。
例如我们要找MongoDB服务PID,按照顺序往下翻,如下图所示:
image.png
从上图可以看出MongoDB服务的PID为4584

2.查看PID对应的端口

打开cmd,按Windows+r组合键,在运行窗口中,输入命令cmd,如下图所示:

image.png
运行窗口中,输入命令cmd,点击“确定”按钮或者按Enter键进入cmd窗口
在cmd窗口中输入命令:netstat -ano
运行结果如下图所示:
image.png
从上图中可以看出PID为4584的进程的本地地址为:127.0.0.1:27017
PID为4584的进程占用端口为27017

3.查找PID对应的端口

查找命令:netstat -ano|findstr "{}"
大括号替换为进程的PID,如下图所示:

image.png

4.编写python代码

将上面3步的思路用python代码实现,以后的查看就可以通过运行python代码得出结果。
代码中有2个函数,定义getPid函数用于模糊搜索进程名和其对应的PID,传入参数processName数据类型为字符串;
定义pid2port函数用于获取PID及其占用的IP本地地址和端口,传入参数pip_input的数据类型为字符串或整数。
在命令行中tasklist | find "{}"可以用于模糊查找进程对应的PID,大括号替换为模糊查找内容。
模糊查找进程名含有sql的进程命令:tasklist | find "sql",如下图所示:

image.png
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

相关文章

  • Windows查看服务占用端口

    本文以MongoDB为例,其他服务的查看流程类似: 1.查看服务的PID 名词解释:服务:电脑访问数据库,其实数据...

  • linux

    查看端口是否存在指令: [windows下端口占用解决方法-查看和杀死占用端口进程:

  • Tomcat相关

    Tomcat端口被占用 1、端口被占用,进入windows命令,查看哪个进程占用该端口 2、然后关闭占用该端口的进...

  • 端口占用

    Windows下 查看对应的端口是否被占用 关闭端口占用 PID号通过查询可以知道对应的数字 MAC 下 查看端口...

  • windows下查看的端口占用情况

    1、Windows平台 在windows命令行窗口下执行: 查看所有的端口占用情况 查看指定端口的占用情况C:>n...

  • windows 命令

    查看windows 端口查看特定端口被占用情况命令: netstat -ano 和 netstat -ano|...

  • 在windows上查看端口是否被占用

    在windows上查看端口是否被占用 netstat -aon|findstr “8080” 杀死该端口占用的进程...

  • windows 查看端口占用

    在命令提示符窗口使用netstat可以查看端口的占用情况,netstat各个参数的含义如下 例如:查看 8080 ...

  • windows查看端口占用

    查看端口号占用 netstat -ano | findstr 9000 杀死进程 taskkill /pid ...

  • Windows查看端口占用

    解决root账号无法登陆的问题:修改my-default.ini,重命名为my.ini,修改文件内容: 在“C:\...

网友评论

      本文标题:Windows查看服务占用端口

      本文链接:https://www.haomeiwen.com/subject/fcqkbftx.html