开源工具 witr:一条命令查清端口占用与进程来源

Admin
55阅读
0评论
0点赞

witr 是一款跨平台开源命令行工具,用一条命令即可追踪端口占用、文件锁、容器与进程的完整启动链路,直接回答“为什么会运行”。支持 JSON 输出和交互式 TUI,兼容 Linux、macOS、Windows 和 FreeBSD。本文介绍其安装方法与典型使用场景。

开发时遇到端口被占用,往往只知道某个进程占着端口,却不知道它为什么在那里。开源工具 witr(Why is this running?)可以一条命令追出进程、端口、容器和文件背后的完整启动链路,直接回答“为什么在运行”。

项目简介

witr 是一个跨平台的开源命令行工具,GitHub 上约 21.7k Star,使用 Apache-2.0 协议,支持 Linux、macOS、Windows 和 FreeBSD。它不满足于告诉你“哪个 PID 在跑”,而是继续向上追踪启动来源,解释这个进程是什么、被谁启动、中间经过了 systemd、PM2、Docker 还是 shell。

witr GitHub 仓库截图

功能特性

一条命令,追出完整因果链

假设 8000 端口被占用,以前要先用 lsof、ss 查端口,再查 PID 和父进程,最后猜测是被哪个服务拉起来的。现在直接用:

witr --port 8000

它会列出监听端口的进程、父进程、启动命令、工作目录和所属服务,直接说出“为什么”。

README 示例:systemd → PM2 → node 链路

不只查端口,文件和容器也能查

除端口外,文件被谁打开、Docker 容器从哪来、服务重启后为什么又自己回来,都可以交给 witr:

witr node
witr --file /var/lib/dpkg/lock
witr --container nginx

项目还纳入了 Docker、Podman、nerdctl、Kubernetes、Incus、LXC/LXD 和 FreeBSD jail 的容器线索。

交互式 TUI 查看全局

不带参数直接运行 witr,会进入终端界面,把进程、端口、容器、文件锁分成几类展示,点进去可以继续追查。它像一个“会讲故事的 top”,重点不是堆指标,而是帮你找到源头。

在线模拟器截图

输出兼容自动化场景

默认输出可读文本,脚本和 Agent 可以改用 JSON:

witr --port 8000 --json
witr --pid 14233 --short

所以它不只是临时排障工具,也能放进 CI、巡检脚本和事故响应流程。

快速安装与使用

Linux、macOS、FreeBSD 一行安装:

curl -fsSL https://raw.githubusercontent.com/pranshuparmar/witr/main/install.sh | bash

Windows PowerShell:

irm https://raw.githubusercontent.com/pranshuparmar/witr/main/install.ps1 | iex

也可以使用包管理器:

brew install witr
winget install -e --id PranshuParmar.witr
npm install -g @pranshuparmar/witr

安装方式截图

装好后先试试:

witr --version
witr --port 3000
witr --container docker

写在最后

查状态和找原因之间那段最费脑子的工作,witr 帮你接上了。遇到端口冲突、服务异常、容器来源不明时,先别急着 kill -9,问一句:到底是谁把它启动起来的?

README 总结:是什么、怎么启动、谁在维持

项目地址

GitHub: https://github.com/pranshuparmar/witr 官网: https://pranshuparmar.github.io/witr/

上一篇DSH-IM 开源插件:让 DeepSeek Harness 接入微信飞书下一篇M系Mac一键拉起预装越狱iOS虚拟机
评论0

暂无评论,期待您的发言...

发表评论