查看并管理占用特定端口号的进程是网络管理和系统维护中常见的需求。以下是一个总结,介绍了如何在不同的操作系统上查看并管理占用特定端口号的进程:
### 查看占用端口号的进程
#### Windows系统
1. "使用任务管理器":
- 按下 `Ctrl + Shift + Esc` 打开任务管理器。
- 切换到“进程”标签页。
- 在“名称”或“PID”列中找到对应的进程。
- 右键点击进程,选择“属性”。
- 在“详细信息”标签页中查看端口号。
2. "使用命令提示符":
- 打开命令提示符(`cmd`)。
- 输入 `netstat -ano`,然后按回车。
- 找到对应端口号的进程ID(PID)。
- 输入 `tasklist`,然后按回车。
- 使用 `findstr` 命令查找进程ID对应的进程名称。
#### Linux和macOS系统
1. "使用lsof命令":
- 打开终端。
- 输入 `sudo lsof -i :端口号`,然后按回车。
- 查看占用该端口号的进程及其详细信息。
2. "使用netstat命令":
- 打开终端。
- 输入
相关内容:
前面的故事:
小白有一天启动某个程序的时候,提示了一个事情:程序无法启动,端口号被占用。
这就要看看,这是哪个程序进程占用的。看看是否有必要给kill掉。
第一种常用方法:
往常,小白都是直接使用绿色小工具解决的,CurrPorts(cports.exe 本文使用版本号:v2.63),相关页面:
https://www.nirsoft.net/utils/cports.html,如下图:

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 "<1564>"
并在命令提示符中输入,如下图:

获取进程名
注意点:
1、tasklist可以获取所有进程和服务的列表信息,findstr的“r”参数,用于功能表达式的字符串查找,这里“<......>”,是用来限定全字匹配,避免出现“11564”、“15643”,“21564”,“15644”等形式相同的混淆信息。
2、查找到进程名以后,可以通过任务管理器、或者继续使用命令行taskkill进行对进程处置。最简单的杀死进程命令:taskkill /t /f /im "-----查找的进程名-----"、或者 taskkill /f /t /pid xxxx。不过,一般不要强制关闭,最好通过查找的进程的程序设置进行自主关闭。
后面的故事:
小白通过上面的学习,查找了他的445端口,经过一顿输入,果然获得了进程名,如下图:

小白查找445端口
他一时高兴万分,可算能关闭进程,把端口拨给心怡的程序占用了,再仔细一看进程名是:System,这谁敢关啊?