前面的故事:
小白有一天启动某个程序的时候,提示了一个事情:程序无法启动,端口号被占用。
这就要看看,这是哪个程序进程占用的。看看是否有必要给kill掉。
第一种常用方法:
往常,小白都是直接使用绿色小工具解决的,CurrPorts(cports.exe 本文使用版本号:v2.63),如下图:
CurrPorts查看端口进程
双击打开,就可以查看到详细的进程占用信息。如下图:
查看详细的进程信息
使用这款小工具,右键点击端口列表项,就可以选择操作:关闭当前连接、关闭占用端口的进程,如下图箭头处:
选择:关闭连接、关闭进程
然而,他现在没有这款常用的小工具。这个时候,他想起了一个命令行工具。
第二种快速方法:
核心部分:
1、使用netstat命令,结合参数“-ano”,经过findstr命令过滤结果,查询占用端口的pid信息
2、使用tasklist命令,经过findstr命令过滤结果,查询进程名
比如查找135端口,详细步骤如下:
1、打开cmd的命令提示符,并英文状态下输入命令:
netstat -ano|findstr -l “:135”
这样网络连接的ipv4、ipv6的信息就精准的显示出来,记住最后一列的进程ID号,这里是“1564”,如下图:
命令行查看端口信息并过滤结果
注意点:
1)netstat命令可以查看一系列网络连接信息,参数-ano,表示,以数字端口号形式显示全部网络连接及对应的进程ID信息,如下图:
netstat -ano解释
2)命令行参数中,端口数字信息前,最好加一个英文状态的冒号,这样可以防止,我们查找形如“44”端口,把存活的“144”、“244”、“44444”等形式相同的端口信息都列举出来。
2、将1步骤中找的进程ID号,补充进新的命令行:
tasklist | findstr -r “\\”
并在命令提示符中输入,如下图:
获取进程名
注意点:
1、tasklist可以获取所有进程和服务的列表信息,findstr的“r”参数,用于功能表达式的字符串查找,这里“\\”,是用来限定全字匹配,避免出现“11564”、“15643”,“21564”,“15644”等形式相同的混淆信息。
2、查找到进程名以后,可以通过任务管理器、或者继续使用命令行taskkill进行对进程处置。最简单的杀死进程命令:taskkill /t /f /im “—–查找的进程名—–“、或者 taskkill /f /t /pid xxxx。不过,一般不要强制关闭,最好通过查找的进程的程序设置进行自主关闭。
后面的故事:
小白通过上面的学习,查找了他的445端口,经过一顿输入,果然获得了进程名,如下图:
小白查找445端口
他一时高兴万分,可算能关闭进程,把端口拨给心怡的程序占用了,再仔细一看进程名是:System,这谁敢关啊?