
本文以MongoDB为例,其他服务的查看过程类似:
术语解释: 服务: 计算机访问,实际上,是服务. 必须先打开该服务,然后才能对其进行访问. 并且计算机打开一个服务,该服务是计算机中的一个进程. PID: 进程标识,进程标识符的缩写,通常是一个十进制数字. 在Windows中查看服务的PID的方法是打开任务管理器并进入详细信息页面. 如果在打开任务管理器时打开了简要信息页面cmd 查看端口占用,请单击“详细信息”按钮,如下所示:
image.png

进入详细信息页面,然后选择下图中红色箭头所示的服务:
image.png
首先单击下图中红色箭头所示的名称,它将按服务名称从大到小排序. 例如,我们要查找MongoDB服务的PID,并按顺序将其关闭,如下图所示:

image.png
从上图可以看到,MongoDB服务的PID为4584.
打开cmd,按Windows + r组合键cmd 查看端口占用,在运行窗口中输入命令cmd,如下图所示:

image.png
在运行窗口中,输入命令cmd,单击“确定”按钮或按Enter键进入cmd窗口. 在cmd窗口中输入命令: netstat -ano结果如下:
image.png

从上图中可以看出,使用PID 4584的进程的本地地址为: 127.0.0.1:27017,即使用PID 4584的进程占用的端口为27017
查找命令: netstat -ano | findstr“ {}”将大括号替换为进程的PID,如下所示:
image.png
用python代码执行上述三个步骤,然后运行python代码以获得结果,以供将来检查. 代码中有2个功能. getPid函数用于模糊搜索过程名称及其对应的PID. 传入参数processName数据类型是字符串. pid2port函数用于获取PID以及它占用的IP本地地址和端口. 参数pip_input的数据类型为字符串或整数. 在命令行中,任务列表| find“ {}”可以用于与模糊搜索过程相对应的PID,用大括号代替模糊搜索内容. 模糊搜索进程名称包含sql进程命令: tasklist |找到“ 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服务,则以上代码的结果如下:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-176102-1.html
实在不行拍拍屈股跑路
撞也撞不疼人家