ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

witr 终极指南:快速完成进程分析,追踪任意进程、端口与文件的启动链路

witr 终极指南:快速完成进程分析,追踪任意进程、端口与文件的启动链路 witr 终极指南快速完成进程分析追踪任意进程、端口与文件的启动链路【免费下载链接】witrWhy is this running? Trace any process, port, container, or file back to what started it - CLI TUI.项目地址: https://gitcode.com/GitHub_Trending/wi/witrwitr 是一个进程分析工具核心使命是回答一个问题这个进程为什么在运行它能把任意进程、端口、容器或打开着的文件一路回溯到最初启动它的责任链——systemd 单元、PM2、Docker 容器、SSH 会话、cron 定时任务……最终给出人类可读的解释、机器可读的 JSON或者一块可交互的终端面板。一条命令装好 witr顺手完成验证witr 是单个静态二进制覆盖 Linuxx86_64 / arm64、macOS、Windows 和 FreeBSD。如果你习惯用包管理器优先用它升级最省事# HomebrewmacOS / Linux brew install witr # APTDebian / Ubuntu sudo apt install witr # Conda / Windows / 跨平台 conda install -c conda-forge witr其余渠道同样可用AURyay -S witr-bin、Winget、Chocolatey、Scoop、NPMnpm install -g pranshuparmar/witr、FreeBSD Ports、MacPorts、AOSC OS、GNU Guix、Uniget、Aqua、Brioche、Mise 等。没有顺手的管理器时直接用官方脚本最省事它会自己识别系统架构、下载二进制并安装 man 手册# UnixLinux / macOS / FreeBSD curl -fsSL https://raw.githubusercontent.com/pranshuparmar/witr/main/install.sh | bash # WindowsPowerShell irm https://raw.githubusercontent.com/pranshuparmar/witr/main/install.ps1 | iex装完做两件事确认witr --version看版本man witr翻手册。想卸载时包管理器装的用对应卸载命令即可脚本装的直接删掉/usr/local/bin/witr和 man 页面Windows 删%LocalAppData%\witr目录。装完之后按任务来查witr 的查询逻辑很直白端口、容器、文件最终都会映射到一个 PID而它的工作就是把这个 PID 的来龙去脉讲清楚。追查一个进程为什么在跑把进程名直接丢给它就行witr nginx注意两点名字默认是子串匹配所以witr ng会同时命中 nginx 和 ngrok 并列出候选如果只要精确同名加--exact短写-xwitr nginx --exact命中的结果里会有一段 Why It Exists形如systemd (pid 1) → pm2 (pid 5034) → node (pid 14233)这就是 witr 的核心产出——一条完整因果链外加负责拉起它的主源systemd 单元、launchd 服务、SSH 会话、pm2、cron、交互式 shell……只选一个主因附带定时触发等细节。排查端口被谁占用不知道进程名、只知道端口时按端口定位有三种常用写法witr --port 5432 # 单个端口 witr --port 8080 --port 3000 # 可重复一次查多个 witr --port 8080 --env # 顺带看它的变量环境输出里会直接告诉你监听进程、PID、绑定地址私有还是 0.0.0.0 公网并继续向上追溯是谁拉起了它。从文件和容器反向定位排查dpkg 被卡住这类问题时查谁握着文件witr --file /var/lib/dpkg/lock容器场景则用--container它会横跨 Docker、Podman、nerdctl、K8s/crictl、Incus、LXC/LXD、FreeBSD jails 按名称、镜像、命令、compose 标签去匹配witr --container redis一次查多个目标所有目标类 flag--pid、--port、--file、--container都可以重复、互相混用还可以和位置参数里的进程名混搭结果按输入顺序分段输出witr nginx --port 5432 --pid 1234用 TUI 实时盯盘不带任何参数运行witr或显式加-i/--interactive就进入交互式 TUI ️。它提供四个标签页进程可排序筛选的实时列表 侧边祖先树、端口LISTEN/ALL 切换、容器跨全部运行时聚合、文件锁可扩展为全部打开文件搜索模式。列表自适应刷新支持鼠标点选行、点列头排序还能直接在 UI 里对进程发信号终止、暂停、恢复或调整 nice 值Unix。临时排查用命令行日常巡检开 TUI是多数人的用法。进阶玩法让输出随你切换几个 flag 值得形成肌肉记忆witr --pid 143895 --tree # 树状展示祖先 最多 10 个子进程高亮目标 witr node --env # 只看环境变量 witr mysql --verbose # 附加内存、I/O、文件描述符等扩展信息 witr docker --warnings # 只看告警root 运行、监听公网、高内存、 # 二进制被删、LD_PRELOAD 注入等可疑信号 witr sshd --short # 一行祖先链最适合脚本和快速扫一眼脚本集成靠--json输出机器可读结果再配合语义化退出码做分支判断退出码含义0找到且无告警1找到但有告警2未找到匹配的进程或服务3权限不足4参数无效或匹配歧义5内部错误在 CI 或监控里case $? in一下就能把进程没起来 / 需要提权自动分流。管道进其他工具时记得--no-color。Shell 自动补全对所有 flag 生效把一行 eval 写进对应配置文件即可# Bash echo eval $(witr completion bash) ~/.bashrc # Zsh echo eval $(witr completion zsh) ~/.zshrcFish 和 PowerShell 分别用witr completion fish | source、witr completion powershell | Out-String | Invoke-Expression永久生效就写进配置目录或$PROFILE。避坑指南现象 — 原因 — 解法现象输出缺失看不到预期信息。原因witr 需要读系统目录和/proc、内核接口普通用户身份可能拿不全。 解法Linux / FreeBSD / macOS 上sudo witr [参数]Windows 则用管理员身份打开终端再跑。注意 macOS 有 SIP 保护个别系统进程即使提权也读不到详情属于平台边界而非 bug。现象报权限被拒绝。原因目标进程归其他用户或系统服务所有。 解法同上提权处理Windows 上非管理员看不到别的用户和系统服务的细节。现象提示找不到进程。原因名字写错、进程其实没在跑或者用了--exact而名称有出入。 解法去掉--exact让它走子串匹配确认候选列表后再用--pid精确指定。平台能力差异速查避免为什么我这里没有能力LinuxmacOSWindowsFreeBSD名称/PID/端口/文件查询✅✅✅✅环境变量✅⚠️ SIP 限制⚠️ 受保护进程不可见✅tmux/screen 会话识别✅✅❌✅定时任务检测timers/launchd✅✅❌❌文件锁 / TUI 发信号操作✅✅❌✅总原则Linux 功能最全其余平台按表降级使用不必怀疑自己装坏了。收尾witr 把它为什么在跑从一堆工具间的拼拼图变成一句话答案装好它先跑witr 进程名再进 TUI 巡一圈遇到拿不准的输出查 docs/cli/witr.md 这份完整 CLI 文档即可。【免费下载链接】witrWhy is this running? Trace any process, port, container, or file back to what started it - CLI TUI.项目地址: https://gitcode.com/GitHub_Trending/wi/witr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表