<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Windows on Snow</title>
        <link>https://SymphonyW.github.io/zh-cn/tags/windows/</link>
        <description>Recent content in Windows on Snow</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <copyright>Snow</copyright>
        <lastBuildDate>Sat, 19 Sep 2026 21:17:15 +0800</lastBuildDate><atom:link href="https://SymphonyW.github.io/zh-cn/tags/windows/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>那些不知道是谁启动的进程，终于能看明白了：OpenEnd</title>
        <link>https://SymphonyW.github.io/zh-cn/p/openend/</link>
        <pubDate>Sat, 19 Sep 2026 21:17:15 +0800</pubDate>
        
        <guid>https://SymphonyW.github.io/zh-cn/p/openend/</guid>
        <description>&lt;img src="https://SymphonyW.github.io/zh-cn/p/openend/OpenEnd-method.png" alt="Featured image of post 那些不知道是谁启动的进程，终于能看明白了：OpenEnd" /&gt;&lt;h1 id=&#34;那些不知道是谁启动的进程终于能看明白了openend&#34;&gt;那些不知道是谁启动的进程，终于能看明白了：OpenEnd
&lt;/h1&gt;&lt;p&gt;平时写代码时，最常见的小麻烦之一就是端口冲突。&lt;/p&gt;
&lt;p&gt;比如启动本地服务时，终端突然告诉你：&lt;code&gt;5173&lt;/code&gt; 已经被占用了。问题不是换个端口有多难，而是你根本不知道是谁占了它。打开任务管理器，只能看到一堆 &lt;code&gt;node.exe&lt;/code&gt;、&lt;code&gt;python.exe&lt;/code&gt;、&lt;code&gt;Code.exe&lt;/code&gt;。它们有些是当前项目需要的，有些可能是上一次开发残留下来的，还有一些是工具在后台悄悄启动的。&lt;/p&gt;
&lt;p&gt;如果不用工具，通常要这样查：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://SymphonyW.github.io/zh-cn/p/openend/powershell-method.png&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;img src=&#34;https://SymphonyW.github.io/zh-cn/p/openend/powershell-method.png&#34; alt=&#34;用 PowerShell 查找并结束端口占用&#34; width=&#34;1479&#34; height=&#34;760&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; class=&#34;gallery-image&#34; data-flex-grow=&#34;194&#34; data-flex-basis=&#34;467px&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;先查端口，再拿 PID 去查进程，确认之后再结束。步骤不算复杂，但每次都要来一遍，尤其是同时跑多个项目时，很容易烦。&lt;/p&gt;
&lt;p&gt;OpenEnd 想解决的就是这个问题。它是一个面向 Windows 用户的本地进程、端口和系统资源管理工具。它不是为了替代 Windows 任务管理器，而是把开发环境里最容易混在一起的信息放到同一个地方：端口、进程、PID、路径、启动命令、CPU、内存，以及操作记录。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://SymphonyW.github.io/zh-cn/p/openend/OpenEnd-method.png&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;img src=&#34;https://SymphonyW.github.io/zh-cn/p/openend/OpenEnd-method.png&#34; alt=&#34;在 OpenEnd 中确认并结束端口占用&#34; width=&#34;2076&#34; height=&#34;1294&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; class=&#34;gallery-image&#34; data-flex-grow=&#34;160&#34; data-flex-basis=&#34;385px&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;在端口页面里，输入端口号就能直接看到对应进程。比如 &lt;code&gt;1313&lt;/code&gt; 被占用时，OpenEnd 会显示它属于 &lt;code&gt;hugo.exe&lt;/code&gt;，PID 是多少，进程路径在哪里，启动命令是什么。你确认它确实不需要了，再点“结束占用”。这个确认弹窗不是装饰，它能让你在动手前再看一眼：自己结束的到底是不是那个进程。&lt;/p&gt;
&lt;p&gt;日常使用里，我更常从性能页开始看。电脑突然变卡，或者风扇开始转得很积极时，先不用猜是不是哪个服务没关。OpenEnd 的性能页会显示 CPU、内存、GPU、显存、线程数、进程数量和端口占用数量。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://SymphonyW.github.io/zh-cn/p/openend/Performance-page.png&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;img src=&#34;https://SymphonyW.github.io/zh-cn/p/openend/Performance-page.png&#34; alt=&#34;OpenEnd 性能页面&#34; width=&#34;1730&#34; height=&#34;1078&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; class=&#34;gallery-image&#34; data-flex-grow=&#34;160&#34; data-flex-basis=&#34;385px&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;它不是专业监控面板，但足够回答一个日常问题：现在机器是不是已经被某些后台任务拖住了？如果端口占用数量明显很多，或者内存已经很高，就可以继续去进程页和端口页定位。&lt;/p&gt;
&lt;p&gt;进程页适合处理那些“不知道是谁启动的进程”。你可以按进程名搜索，比如输入 &lt;code&gt;node&lt;/code&gt;，马上能看到相关进程的 PID、CPU、内存、端口、路径和启动命令。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://SymphonyW.github.io/zh-cn/p/openend/Search-by-name.png&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;img src=&#34;https://SymphonyW.github.io/zh-cn/p/openend/Search-by-name.png&#34; alt=&#34;按进程名搜索本机进程&#34; width=&#34;2076&#34; height=&#34;1294&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; class=&#34;gallery-image&#34; data-flex-grow=&#34;160&#34; data-flex-basis=&#34;385px&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;这比只看任务管理器里的进程名清楚很多。比如同样叫 &lt;code&gt;node.exe&lt;/code&gt;，一个可能是当前项目的开发服务，另一个可能只是某个工具的子进程。看到路径和启动命令后，判断起来就轻松不少。&lt;/p&gt;
&lt;p&gt;端口页则更适合处理“服务起不来”的时候。你可以按端口、进程名、协议和状态筛选。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://SymphonyW.github.io/zh-cn/p/openend/Port-page.png&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;img src=&#34;https://SymphonyW.github.io/zh-cn/p/openend/Port-page.png&#34; alt=&#34;OpenEnd 端口页面&#34; width=&#34;2076&#34; height=&#34;1294&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; class=&#34;gallery-image&#34; data-flex-grow=&#34;160&#34; data-flex-basis=&#34;385px&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;如果只关心某个端口，比如 &lt;code&gt;5173&lt;/code&gt;，搜索后就会变成一个很小的结果集：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://SymphonyW.github.io/zh-cn/p/openend/Search-by-port.png&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;img src=&#34;https://SymphonyW.github.io/zh-cn/p/openend/Search-by-port.png&#34; alt=&#34;按端口搜索占用情况&#34; width=&#34;2076&#34; height=&#34;1294&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; class=&#34;gallery-image&#34; data-flex-grow=&#34;160&#34; data-flex-basis=&#34;385px&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;从截图里可以看到，端口后面不只是一个数字，还能看到它对应的进程、PID、协议、状态、资源占用、路径和启动命令。对开发者来说，这些信息比单纯知道“端口被占用”更有用。&lt;/p&gt;
&lt;p&gt;还有一个我自己很常用的页面是清理。开发结束后，经常会有一些服务还留在后台。OpenEnd 会根据规则识别可能和开发相关的候选进程，比如 Node / Vite、Python、Go、数据库相关进程和常见开发端口。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://SymphonyW.github.io/zh-cn/p/openend/Recommend-clear.png&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;img src=&#34;https://SymphonyW.github.io/zh-cn/p/openend/Recommend-clear.png&#34; alt=&#34;OpenEnd 清理推荐页面&#34; width=&#34;2076&#34; height=&#34;1294&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; class=&#34;gallery-image&#34; data-flex-grow=&#34;160&#34; data-flex-basis=&#34;385px&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;这里我刻意没有做成“自动杀进程”。它只推荐，不替你决定。你可以看到候选项、路径、启动命令、CPU、内存、端口和命中的规则，然后自己选择要不要结束。开发环境里的进程不是越少越好，有些服务还在支撑当前项目，工具应该帮人看清楚，而不是替人乱动。&lt;/p&gt;
&lt;p&gt;每一次结束进程或端口占用，OpenEnd 都会写入日志。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://SymphonyW.github.io/zh-cn/p/openend/Operate-log.png&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;img src=&#34;https://SymphonyW.github.io/zh-cn/p/openend/Operate-log.png&#34; alt=&#34;OpenEnd 操作日志&#34; width=&#34;2076&#34; height=&#34;1294&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; class=&#34;gallery-image&#34; data-flex-grow=&#34;160&#34; data-flex-basis=&#34;385px&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;这个功能看起来很小，但排查问题时很实用。比如你后来发现某个服务不见了，可以回到日志里看：什么时候结束的、结束的是哪个 PID、进程名是什么、结果是否成功。&lt;/p&gt;
&lt;p&gt;设置页主要做两件事：保护进程和清理规则。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://SymphonyW.github.io/zh-cn/p/openend/Setting-page.png&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;img src=&#34;https://SymphonyW.github.io/zh-cn/p/openend/Setting-page.png&#34; alt=&#34;OpenEnd 设置页面&#34; width=&#34;2076&#34; height=&#34;1294&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; class=&#34;gallery-image&#34; data-flex-grow=&#34;160&#34; data-flex-basis=&#34;385px&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;一些关键 Windows 系统进程默认会被保护，避免误操作。你也可以添加自己的保护进程，比如某个长期运行的本地服务。清理规则也可以自己配置：进程名、命令关键字、端口、端口范围都能作为识别条件。如果你的项目习惯固定，比如总是用一组本地端口，也可以让 OpenEnd 更贴合自己的工作流。&lt;/p&gt;
&lt;p&gt;如果遇到问题，反馈页里也放了邮件和问题模板，方便把当时的进程、端口、截图和复现步骤整理清楚。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://SymphonyW.github.io/zh-cn/p/openend/Feedback.png&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;img src=&#34;https://SymphonyW.github.io/zh-cn/p/openend/Feedback.png&#34; alt=&#34;OpenEnd 反馈页面&#34; width=&#34;2076&#34; height=&#34;1294&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; class=&#34;gallery-image&#34; data-flex-grow=&#34;160&#34; data-flex-basis=&#34;385px&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;简单总结一下，OpenEnd 解决的不是一个很宏大的问题，而是这些每天都可能发生的小打断：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;场景&lt;/th&gt;
&lt;th&gt;OpenEnd 能帮你做什么&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;端口被占用&lt;/td&gt;
&lt;td&gt;直接找到对应进程、PID、路径和启动命令&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;不知道某个进程能不能关&lt;/td&gt;
&lt;td&gt;看它的端口、资源占用和来源路径&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI 编程工具启动了多个后台进程&lt;/td&gt;
&lt;td&gt;搜索进程名，判断哪些还在占资源&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;电脑突然变卡&lt;/td&gt;
&lt;td&gt;先看 CPU、内存、GPU、显存和进程数量&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;开发结束后收尾&lt;/td&gt;
&lt;td&gt;根据清理推荐检查残留服务&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;担心误操作&lt;/td&gt;
&lt;td&gt;使用默认保护进程和自定义保护规则&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;目前 OpenEnd 支持 Windows 10 / 11。需要说明的是，当前 Windows 安装包还没有接入代码签名，所以安装时可能会看到 Windows SmartScreen 或“未知发布者”的提示。建议只从官方 GitHub Releases 页面下载，不要从不明来源安装。&lt;/p&gt;
&lt;p&gt;项目已经开源：&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/SymphonyW/OpenEnd&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/SymphonyW/OpenEnd&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果你也经常被端口占用、残留进程、后台服务这些小问题打断，可以下载试试看。遇到问题，或者希望它支持更多使用场景，也欢迎在 GitHub 提交 Issue。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
