witr:揭秘系统进程运行的原因
witr:终极工具,解答系统上“这是为什么在运行?”的疑问
在系统管理和调试的世界里,有一个问题始终困扰着每位运维工程师:“这个进程为什么在运行?” 不管是占用 CPU 的神秘进程、绑定端口的服务,还是停不下来的容器,传统的工具如 ps、top、lsof 或 systemctl 只能告诉你什么在运行——却无法解释为什么。这时,witr 登场了,这款革命性的开源命令行工具,能让因果关系一目了然。
witr 的独特之处?
witr 用 Go 语言开发,GitHub 上已有 10.9k 星标,它能追踪任意进程、服务或端口的完整“家谱”。它揭示进程是如何启动的(比如通过 systemd、pm2、Docker 或 cron),以及什么让它继续存活。主要目标: - 零配置 - 只读且安全 - 输出易读 - 单屏摘要
非目标包括监控或自动修复——witr 专注于事件中的清晰洞察。
闪电般快速安装
witr 是一个单一静态二进制文件,支持各种打包方式:
快速脚本(推荐用于测试)
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:
brew install witr - Conda/Mamba/Pixi:
conda install -c conda-forge witr - Arch (AUR):
yay -S witr-bin - FreeBSD:
pkg install sysutils/witr - 更多:AOSC OS、GNU Guix、从发布页下载 deb/rpm/apk。
验证:witr --version 或 man witr。
核心用法:针对任意目标
witr 将所有查询统一转为 PID 分析:
- 按名称: witr node 或 witr nginx
- 按 PID: witr --pid 14233
- 按端口: witr --port 5000
示例输出
目标:node
进程:node (pid 14233) | 用户:pm2 | 启动时间:2 天前 | 重启次数:1
存在原因:systemd (pid 1) → pm2 (pid 5034) → node (pid 14233)
来源:pm2
工作目录:/opt/apps/expense-manager
Git 仓库:expense-manager (main)
监听端口:127.0.0.1:5001
高级用户标志:
- --short:一行摘要
- --tree:进程家谱树
- --json:机器可读
- --warnings:仅安全警告(例如 root 进程、公网绑定)
跨平台完美支持
| 功能 | Linux | macOS | Windows | FreeBSD |
|---|---|---|---|---|
| 进程信息 | ✅ | ✅ | ✅ | ✅ |
| systemd/launchd | ✅ | ✅ | - | rc.d ✅ |
| 容器 (Docker) | ✅ | ⚠️ | - | Jails ✅ |
在受限系统上运行需用 sudo 以获取完整权限。
为什么运维工程师爱上它
witr 将调试时间从工具间跳跃的几分钟缩短到几秒。完美适用于故障排除、审计或好奇心驱动的排查。29 名贡献者和活跃发布(最新 v0.2.4),Apache-2.0 许可,已生产就绪。
立即上手: 从 GitHub 克隆、安装,然后运行 witr --help。你的系统会感谢你。
星标:10.9k | 分叉:244 | 平台:Linux/macOS/Windows/FreeBSD