【witr】告别盲目排查:一款帮你追溯进程与端口启动因果链的终端神器
这是一款专注于回答“为什么这个程序在运行”的跨平台命令行工具。它通过追踪进程、端口、容器或文件,将孤立的系统状态转化为清晰的启动因果链,帮你彻底搞清楚系统中每个运行项的来源、启动方式及上下文。
主要功能与特性
- 多维度目标查询:支持通过进程名称、PID、端口号、被占用的文件路径或容器名称进行查询,且支持模糊匹配与精确匹配。
- 启动因果链追溯:打破传统工具只展示“是什么”的局限,清晰构建进程的祖先树,解释它是如何被启动的(例如由 systemd、Docker、pm2、cron 或 SSH 会话触发)。
- 交互式终端面板 (TUI):无需记忆复杂参数,直接启动实时仪表盘。包含进程、端口、容器和文件锁四个标签页,支持鼠标点击、排序和过滤,并能直接发送信号管理进程。
- 深度上下文与风险警告:自动关联工作目录、Git 仓库分支等信息;同时具备安全诊断能力,对以 root 运行、监听公网接口、高危权限或内存占用过高等情况发出非阻断性警告。
- 灵活的输出模式:提供叙事风格的标准输出、树状图、简短模式,以及方便 CI/CD 和脚本处理的 JSON 格式和明确的退出状态码。
- 全面的跨平台兼容:原生支持 Linux、macOS、Windows 和 FreeBSD,Windows 端直接调用底层 API,无需依赖 PowerShell 或 WMI。
安装与使用示例
对于 Unix 系统(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
注:该工具也已上架 Homebrew、APT、Winget、Conda、NPM 等主流包管理器,可直接通过对应命令安装。
简单使用示例:
- 查询特定进程:查看
node进程的来源和上下文。
bash
witr node - 查询端口占用(简短模式):快速查看 5000 端口的进程启动链。
bash
witr --port 5000 --short - 查看进程树:以树状图展示特定 PID 的父子进程关系。
bash
witr --pid 143895 --tree - 启动交互式面板:不带任何参数运行,即可进入可视化的 TUI 仪表盘。
bash
witr
适用场景与目标用户
- 适用场景:服务器故障排查(如定位不明端口占用)、复杂环境下的进程溯源(理清容器、服务管理器与进程的关系)、系统安全审计(排查高危权限或异常监听进程)、以及日常开发中的环境调试。
- 目标用户:后端开发者、运维工程师、系统管理员,以及希望深入了解系统底层运行机制、但又不想在
ps、lsof、netstat等多个工具间来回切换的技术人员。
总结
这款工具巧妙地将系统排查的逻辑从“寻找状态”升级为“追溯因果”,极大地降低了理解复杂系统运行状态的门槛。它不仅输出直观、功能全面,还通过交互式面板照顾了不同习惯的用户。如果你经常需要和服务器或本地复杂环境打交道,它绝对是一个能帮你节省大量排查时间的得力助手。
