这个项目能做什么

witr 是一个适用于 Linux、macOS、Windows 和 FreeBSD 的单一静态二进制文件,它回答一个问题:它为什么在运行?给定进程名、PID、端口、容器或打开的文件,它会构建导致该事物此刻存在的监督程序、服务、shell 和容器的因果链。 核心理念:一切都被视为进程问题。端口、服务、容器和命令都映射回 PID,一旦识别出 PID,witr 就会解释正在运行什么、它是如何启动的、是什么让它持续运行,以及它属于什么上下文。这与 ps、top、lsof、ss、systemctl 或 docker ps 等工具不同,后者暴露状态和元数据,但让用户手动关联输出。 使用模式: - 标准输出显示目标、进程、用户、命令、启动时间、祖先链(例如 systemd 到 pm2 到 node)、来源、工作目录、git 仓库和套接字。 - --short 仅打印祖先链;--tree 将祖先渲染为树,包括最多 10 个子进程。 - --json 输出机器可读结果;--env 显示环境变量;--verbose 添加扩展进程信息;--warnings 仅显示警告。 - 位置参数被视为进程或服务名称,默认使用子字符串匹配,--exact 用于精确名称。多个匹配项会列出 PID,并建议使用 --pid 重新运行。 - --pid、--port、--file 和 --container 可重复使用,并且可以彼此以及与名称参数混合使用;结果按给定顺序出现,并由带标签的分隔符分隔。 - --container 会搜索 Docker、Podman、nerdctl、K8s/crictl、Incus、LXC、LXD 和 FreeBSD jail,匹配容器名称、镜像、命令以及 compose 项目/服务标签。 交互式 TUI:不带参数或使用 -i 运行 witr 会打开一个包含四个标签页的终端仪表板。Processes 显示一个实时可排序、可过滤的列表,并带有祖先侧边面板。Ports 列出监听端口或所有端口及其所属进程,可用 a 切换。Containers 聚合受支持运行时中的正在运行的容器,并提供挂载、网络和 compose 元数据的详细视图。Locks 显示系统范围的锁文件(Linux 上为 POSIX/FLOCK,macOS/FreeBSD 上源自 lsof),并可合并所有有趣的打开文件描述符。TUI 还支持进程操作,例如在 Unix 上 kill、terminate、pause、resume 和 renice,支持鼠标导航、自适应浅色/深色主题,以及从 3 秒开始的自适应节奏自动刷新。 安装方式广泛:提供适用于 Unix 和 Windows 的安装脚本,以及通过 APT、Homebrew、MacPorts、Conda、AUR、Winget、npm、FreeBSD Ports、Chocolatey、Scoop、AOSC OS、GNU Guix、Uniget、Aqua、Brioche 和 mise 提供的软件包,并提供 deb/rpm/apk 构件以及从源码 go install。为 Bash、Zsh、Fish 和 PowerShell 提供 shell 补全,并包含 man 手册页。还提供基于浏览器的模拟教程和沙盒,无需安装即可试用该工作流程。