如何确定哪个进程正在侦听Windows上的TCP或UDP端口?
当前回答
如果有人像我一样需要macOS的等价物,下面是:
lsof-i tcp:8080
获取进程的PID后,可以使用以下命令终止该进程:
终止-9<PID>
其他回答
正在使用PowerShell。。。…这将是您的朋友(用端口号替换8080):
netstat -abno | Select-String -Context 0,1 -Pattern 8080
样本输出
> TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 2920
[tnslsnr.exe]
> TCP [::]:8080 [::]:0 LISTENING 2920
[tnslsnr.exe]
因此,在此示例中,tnslsnr.exe(OracleXE数据库)正在侦听端口8080。
快速解释
选择字符串用于过滤相关行的netstat的冗长输出。-模式根据正则表达式测试每行。-上下文0,1将为每个模式匹配输出0个前导行和1个尾随行。
如果您想使用GUI工具来实现这一点,可以使用Sysinternals的TCPView。
获取PID和图像名称
仅使用一个命令:
for /f "tokens=5" %a in ('netstat -aon ^| findstr 9000') do tasklist /FI "PID eq %a"
其中9000应替换为您的端口号。
输出将包含如下内容:
Image Name PID Session Name Session# Mem Usage
========================= ======== ================ =========== ============
java.exe 5312 Services 0 130,768 K
说明:
它遍历以下命令输出的每一行:netstat-aon | findstr 9000从每一行中,提取PID(%a-名称在此不重要)(PID是该行中的第5个元素)并传递给以下命令任务列表/FI“PID eq 5312”
如果要跳过标头和命令提示符的返回,可以使用:
echo off & (for /f "tokens=5" %a in ('netstat -aon ^| findstr 9000') do tasklist /NH /FI "PID eq %a") & echo on
输出:
java.exe 5312 Services 0 130,768 K
键入命令:netstat-aon|findstr:DESIRED_PORT_NUMBER
例如,如果我想查找端口80:netstat-aon|findstr:80
这个答案最初是针对这个问题发布的。
netstat-ao和netstat-ab告诉您应用程序,但如果您不是系统管理员,则会得到“请求的操作需要提升”。
这并不理想,但如果您使用Sysinternals的Process Explorer,您可以转到特定进程的财产,查看TCP选项卡,看看它们是否正在使用您感兴趣的端口。这有点像大海捞针,但可能会对某人有所帮助。。。
推荐文章
- 我如何找到哪个程序正在使用端口80在Windows?
- 在Windows中有像GREP这样的模式匹配实用程序吗?
- 如何在Windows命令提示符下运行.sh ?
- 如何从命令行在windows中找到mysql数据目录
- 在没有事件源注册的情况下写入Windows应用程序事件日志
- 有效地测试Linux上的端口是否打开?
- 访问HTTP响应作为字符串在Go
- 无法在Windows上从/usr/local/ssl/openssl.cnf加载配置信息
- GIT克隆在windows中跨本地文件系统回购
- 如何运行一个PowerShell脚本而不显示窗口?
- PowerShell:仅为单个命令设置环境变量
- 在SSH会话中查找客户端的IP地址
- 为什么这个Windows批处理文件只执行第一行,而在命令shell中执行所有三行?
- 环境变量存储在Windows注册表的哪里?
- 有一个好的Valgrind Windows的替代品吗?