Repolode
pranshuparmar

pranshuparmar/witr

一款命令行与终端界面工具,可追溯进程、端口、容器或文件的启动来源链。

Star
22,720
Fork
892
未关闭 Issue
2
最近提交
昨天

这是什么?

witr 用于回答一个问题:这个进程、监听端口、容器或被占用的文件为什么会在运行。ps、lsof、ss、docker ps 等工具只能显示当前状态,无法说明它是如何被启动的。witr 会沿着父进程链以及 systemd、launchd、PM2、cron、SSH 会话、tmux、容器运行时等守护或管理系统向上追溯,列出负责该进程存在的完整链条。

可以用名称、--pid、--port、--file 或 --container 进行查询,输出包括启动链、启动来源、工作目录、Git 分支、套接字以及以 root 运行、监听公网地址等警告。输出支持简短、树形、详细和 JSON 格式,并定义了退出码,便于脚本和 CI 使用。不带参数运行则进入交互式 TUI,包含进程、端口、容器和文件锁四个标签页,在 Unix 系统上还可发送信号或调整优先级。

项目使用 Go 编写,为 Linux、macOS、Windows 和 FreeBSD 提供单一二进制文件,并支持多种包管理器安装。

核心功能

  • 01沿父进程链和守护进程(如 systemd、launchd、PM2、cron、SSH)追溯进程的启动来源。
  • 02支持按进程名、PID、监听端口、打开的文件或容器进行查询。
  • 03覆盖 Docker、Podman、nerdctl、Kubernetes/crictl、Incus、LXC、LXD 及 FreeBSD jail。
  • 04提供包含进程、端口、容器和文件锁标签页的交互式终端界面。
  • 05可输出易读报告、简短或树形视图,或带文档化退出码的 JSON。

适用场景

  • 开发服务器提示端口已被占用时,查看是哪个进程占用了它。
  • 在线上事故中排查来历不明或卡住的进程。
  • 确认某个运行中的端口属于哪个 Compose 服务或容器。
  • 让 AI 编程代理通过 JSON 输出诊断端口和进程冲突。

快速上手

  1. 1

    使用 Unix 安装脚本安装

    按 README 中的官方说明安装
  2. 2

    或使用 Homebrew 安装

    brew install witr
  3. 3

    或从 Go 源码安装

    go install github.com/pranshuparmar/witr/cmd/witr@latest

使用前须知

  • 不同平台的安装方式不同,社区打包版本可能落后于 GitHub 发布版本。

标签

常见问题

witr 是什么?
一款命令行与终端界面工具,可追溯进程、端口、容器或文件的启动来源链。 witr 用于回答一个问题:这个进程、监听端口、容器或被占用的文件为什么会在运行。ps、lsof、ss、docker ps 等工具只能显示当前状态,无法说明它是如何被启动的。witr 会沿着父进程链以及 systemd、launchd、PM2、cron、SSH 会话、tmux、容器运行时等守护或管理系统向上追溯,列出负责该进程存在的完整链条。
witr 可以免费使用吗?用的什么许可证?
witr 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
witr 还在维护吗?
活跃维护中。witr 最近一次提交是在 2026年10月19日。
witr 适合用来做什么?
开发服务器提示端口已被占用时,查看是哪个进程占用了它。 在线上事故中排查来历不明或卡住的进程。 确认某个运行中的端口属于哪个 Compose 服务或容器。 让 AI 编程代理通过 JSON 输出诊断端口和进程冲突。
witr 怎么安装和运行?
使用 Unix 安装脚本安装 或使用 Homebrew 安装: brew install witr 或从 Go 源码安装: go install github.com/pranshuparmar/witr/cmd/witr@latest
在哪里获取 witr?
源代码和安装说明在 GitHub 上:https://github.com/pranshuparmar/witr

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目