新闻详情

新闻详情

首页 / 资讯中心 / 详情

witr 技术指南:一键追溯进程、端口、容器与文件的完整启动因果链(CLI + TUI)

发布时间:2026/9/13 20:36:55来源:尧图网络
witr 技术指南:一键追溯进程、端口、容器与文件的完整启动因果链(CLI + TUI)
witr 技术指南一键追溯进程、端口、容器与文件的完整启动因果链CLI TUI【免费下载链接】witrWhy is this running? Trace any process, port, container, or file back to what started it - CLI TUI.项目地址: https://gitcode.com/GitHub_Trending/wi/witrwitrWhy is this running?是一个用于 Linux、macOS、Windows 与 FreeBSD 的进程因果溯源工具它能把任意进程、端口、容器或文件锁定一路追溯到“到底是谁启动了它”并以单条人类可读输出、机器可读 JSON 或交互式 TUI 仪表盘三种形态呈现。本文以仓库根目录 README.md 为主线结合 internal/app/app.go、internal/pipeline/analyze.go、internal/proc/ancestry.go、internal/source/detect.go 等源码实现完整讲解 witr 的安装方式、全部命令行参数、核心工作原理、输出格式、退出码与跨平台能力矩阵读完即可在真实环境中用它排查“这台机器上到底为什么跑着这个东西”。1. 设计动机从“什么是运行的”到“为什么在运行”witr 的存在是为了回答一个单一问题Why is this running?为什么它在运行系统上任何正在运行的东西——进程、服务、绑定到端口的监听者——都必然有一个原因。而这个原因往往是间接的、不直观的并且分散在多个层面supervisor如 systemd、PM2、容器、服务管理器、SSH 会话或交互式 Shell 等。传统的排查工具ps、top、lsof、ss、systemctl、docker ps暴露的是状态与元数据它们告诉你什么在运行却把“为什么”留给你自己去跨工具人工比对。witr 把这种因果性显式化——它在一份输出中解释一件事从哪里来、如何被启动、当前由哪条系统链负责其存在。从源码看这个“追根溯源”的核心能力落在 internal/proc/ancestry.go 的ResolveAncestry它从目标 PID 沿 PPID 指针逐级向上读取祖先进程直到 PID 1 或 PPID 为 0再做环保护seen集合与链表反转最终得到从根到目标的完整进程链。整个分析管线则由 internal/pipeline/analyze.go 的AnalyzePID驱动先取祖先链再做来源检测source.Detect最后聚合出model.Result含进程信息、祖先链、来源、警告、资源上下文等。2. 安装方式总览witr 以单一静态二进制形式分发支持 Linux、macOS、FreeBSD 与 Windows同时被众多操作系统与生态独立打包维护。官方建议若你使用包管理器Homebrew、Conda、Winget 等优先通过包管理器安装以便更新否则使用安装脚本是上手最快的方式。需要说明的是社区打包的版本可能因独立审核与验证流程而滞后于官方发布版本。2.1 快速安装UnixLinux、macOS 与 FreeBSDcurl -fsSL https://raw.githubusercontent.com/pranshuparmar/witr/main/install.sh | bash脚本行为对应仓库根目录的 install.sh检测操作系统linux、darwin、freebsd检测 CPU 架构amd64或arm64下载最新发布的二进制与 man page安装到/usr/local/bin/witr安装 man page 到/usr/local/share/man/man1/witr.1可通过INSTALL_PREFIX环境变量覆盖默认安装路径。WindowsPowerShellirm https://raw.githubusercontent.com/pranshuparmar/witr/main/install.ps1 | iex脚本行为对应 install.ps1下载最新发布包zip并校验 checksum解压witr.exe到%LocalAppData%\witr\bin将该 bin 目录加入用户的PATH。2.2 包管理器安装witr 在主流包管理生态中均有打包包括 APT、Homebrew、MacPorts、Conda、AUR、Winget、npm、FreeBSD Ports、Chocolatey、Scoop、AOSC OS、GNU Guix、Uniget、Aqua、Brioche 与 Mise。以下按生态列出安装命令生态适用平台命令APTDebian/Ubuntu 及衍生版Linuxsudo apt install witrHomebrewmacOS Linuxbrew install witrMacPortsmacOSsudo port install witrConda / mamba / piximacOS、Linux、Windowsconda install -c conda-forge witr、mamba install -c conda-forge witr、pixi global install witrAURArch LinuxLinuxyay -S witr-bin或paru -S witr-binWingetWindowswinget install -e --id PranshuParmar.witrnpm跨平台npm install -g pranshuparmar/witrFreeBSD PortsFreeBSDpkg install witr或pkg install sysutils/witr亦可cd /usr/ports/sysutils/witr/ make install clean从 Ports 构建ChocolateyWindowschoco install witrScoopWindowsscoop install main/witrAOSC OSLinuxoma install witrGNU GuixLinuxguix install witrUnigetLinuxuniget install witrAquamacOS、Linux、Windowsaqua g -i pranshuparmar/witr后aqua i pranshuparmar/witrBriocheLinuxbrioche install -r witrMisemacOS、Linux、Windowsmise use github:pranshuparmar/witr此外官方还提供deb / rpm / apk 预编译包可从 GitHub Releases 页面下载Debian/Ubuntu 用sudo dpkg -i ./witr-*.deb或sudo apt install ./witr-*.deb让 apt 解析依赖Fedora/RHEL/CentOS 用sudo rpm -i ./witr-*.rpmAlpine 用sudo apk add --allow-untrusted ./witr-*.apk。2.3 源码与手动安装Go跨平台推荐开发者go install github.com/pranshuparmar/witr/cmd/witrlatest二进制会落到$GOPATH/bin或$HOME/go/bin请确保该目录在PATH中。仓库根目录的 main.go 与 cmd/witr/main.go 即命令行入口它调用app.SetVersion注入版本信息后执行app.Execute()。也可在构建时用-ldflags覆盖版本号、commit 与构建日期go build -ldflags -X github.com/pranshuparmar/witr/internal/version.Versionv0.3.0 -X github.com/pranshuparmar/witr/internal/version.Commit$(git rev-parse --short HEAD) -X github.com/pranshuparmar/witr/internal/version.BuildDate$(date %Y-%m-%d) -o witr ./cmd/witr手动安装Unix# 1. 确定 OS 与架构 OS$(uname -s | tr [:upper:] [:lower:]) ARCH$(uname -m) [ $ARCH x86_64 ] ARCHamd64 [ $ARCH aarch64 ] ARCHarm64 # 2. 下载二进制 curl -fsSL https://github.com/pranshuparmar/witr/releases/latest/download/witr-${OS}-${ARCH} -o witr # 3. 校验 checksum可选 curl -fsSL https://github.com/pranshuparmar/witr/releases/latest/download/SHA256SUMS -o SHA256SUMS grep witr-${OS}-${ARCH} SHA256SUMS | (sha256sum -c - 2/dev/null || shasum -a 256 -c - 2/dev/null) rm SHA256SUMS # 4. 重命名并安装 chmod x witr sudo mkdir -p /usr/local/bin sudo mv witr /usr/local/bin/witr # 5. 安装 man page可选 sudo mkdir -p /usr/local/share/man/man1 sudo curl -fsSL https://github.com/pranshuparmar/witr/releases/latest/download/witr.1 -o /usr/local/share/man/man1/witr.1手动安装Windows PowerShell# 1. 确定架构 if ($env:PROCESSOR_ARCHITECTURE -eq AMD64) { $ZipName witr-windows-amd64.zip } elseif ($env:PROCESSOR_ARCHITECTURE -eq ARM64) { $ZipName witr-windows-arm64.zip } else { Write-Error Unsupported architecture: $($env:PROCESSOR_ARCHITECTURE) exit 1 } # 2. 下载 zip Invoke-WebRequest -Uri https://github.com/pranshuparmar/witr/releases/latest/download/$ZipName -OutFile witr.zip # 3. 解压 Expand-Archive -Path witr.zip -DestinationPath . -Force # 4. 校验 checksum可选 Invoke-WebRequest -Uri https://github.com/pranshuparmar/witr/releases/latest/download/SHA256SUMS -OutFile SHA256SUMS $hash Get-FileHash -Algorithm SHA256 .\witr.zip $expected Select-String -Path .\SHA256SUMS -Pattern $ZipName if ($expected -and $hash.Hash.ToLower() -eq $expected.Line.Split( )[0]) { Write-Host Checksum OK } else { Write-Host Checksum Mismatch } # 5. 安装到本地 bin 目录 $InstallDir $env:LocalAppData\witr\bin New-Item -ItemType Directory -Path $InstallDir -Force | Out-Null Move-Item .\witr.exe $InstallDir\witr.exe -Force # 6. 持久化加入用户 PATH $UserPath [Environment]::GetEnvironmentVariable(Path, User) if ($UserPath -notlike *$InstallDir*) { [Environment]::SetEnvironmentVariable(Path, $UserPath;$InstallDir, User) $env:Path ;$InstallDir Write-Host Added to Path. You may need to restart PowerShell. } # 7. 清理 Remove-Item witr.zip Remove-Item SHA256SUMS2.4 免安装运行Nix Flakenix run github:pranshuparmar/witr -- --helpPixipixi exec witr --help2.5 验证、Shell 补全与卸载验证安装witr --version man witrShell 补全witr 为所有 flag 提供 tab 补全由 internal/app/app.go 中基于 cobra 的CompletionOptions启用Bashecho eval $(witr completion bash) ~/.bashrc后source ~/.bashrcZshecho eval $(witr completion zsh) ~/.zshrc后source ~/.zshrcFishwitr completion fish | source持久化用witr completion fish ~/.config/fish/completions/witr.fishPowerShellwitr completion powershell | Out-String | Invoke-Expression持久化则加入$PROFILE卸载包管理器安装的用对应命令如brew uninstall witr脚本/手动安装的Unix 下执行sudo rm -f /usr/local/bin/witr与sudo rm -f /usr/local/share/man/man1/witr.1Windows 下执行Remove-Item -Recurse -Force $env:LocalAppData\witr。3. 命令行 Flags 全解析运行witr --help可见完整参数。下表为 README 与 internal/app/app.go 中init()注册的全部 flags-c, --container strings container(s) to look up (repeatable) --env show environment variables for the process -x, --exact use exact name matching (no substring search) -f, --file strings file(s) held open by a process (repeatable) -h, --help help for witr -i, --interactive interactive mode (TUI) --json show result as JSON --no-color disable colorized output -p, --pid strings pid(s) to look up (repeatable) -o, --port strings port(s) to look up (repeatable) -s, --short show only ancestry -t, --tree show only ancestry as a tree --verbose show extended process information -v, --version version for witr --warnings show only warnings关键语义位置参数不带 flag 的裸参数被当作进程或服务名可传多个。默认按子串匹配模糊搜索--exact则只匹配名称完全一致含 cmdline 中完整路径段的进程——见 internal/target/resolve.go 的matchesExactToken它会把命令行的每个 token 按/与\切分后做精确段匹配例如core24可匹配参数/snap/core24/1349。所有目标 flag--pid、--port、--file、--container均可重复且可彼此混合、与位置参数混用。多个目标时结果按你输入的顺序依次输出并以带标签的分隔线区分。所有输出模式standard、short、tree、JSON、env、warnings、verbose都支持多输入。这一“保持输入顺序”的解析由collectTargetsInOrder实现它会遍历原始 argv、区分--flagvalue与--flag value两种形式、跳过非目标 flag 的取值从而把位置参数按出现位置穿插进目标列表。--container搜索范围跨 Docker、Podman、nerdctl、K8s/crictl、Incus、LXC、LXD 与 FreeBSD jails按容器名、镜像、命令及 compose project/service 标签匹配详见 internal/proc/container_detect.go 与 internal/proc/container_runtime.go。TUI 启动规则不带任何参数、或未提供任何目标 flag--pid/--port/--file/--container、或显式使用-i/--interactive时进入交互模式。这一点在runApp中体现仅当--env之外的所有目标 flag 与位置参数均为空时才进入 TUI。目标的类型定义在 pkg/model/target.goname、pid、port、file、container五种Resolve还会做输入合法性校验PID 必须为正整数端口必须在 1~65535 之间。4. 交互模式TUI不带任何参数运行witr或用-i显式进入即启动基于 Bubble Tea 的终端仪表盘见 internal/tui/model.go 等实现提供实时刷新的四大标签页Processes 标签页所有运行中进程的实时、可排序、可过滤列表侧面板展示高亮进程的祖先树。Ports 标签页监听中的端口列表侧面板挂载其属主进程按a在“仅 LISTEN”与“全部”之间切换。Containers 标签页跨 Docker、Podman、nerdctl、K8s/crictl、Incus、LXC、LXD 与 FreeBSD jails 的全部运行中容器展示名称、镜像、状态、端口、命令每个容器还有包含挂载、网络与 compose project 元数据的详情视图。Locks 标签页系统级文件锁Linux 基于 POSIX/FLOCKmacOS/FreeBSD 基于 lsof 推导。按a切换到“所有打开文件”模式锁条目会与所有值得关注的打开 fd 合并在/中键入内容可对合并集合搜索。TUI 还支持进程详情完整祖先树、子进程、环境变量、工作目录、套接字、文件上下文等、进程操作Unix 下直接从 UI 发送 Kill/Terminate/Pause/Resume 信号或 Renice、鼠标支持导航、排序列、点击行、自适应主题根据终端明暗背景自动适配颜色与自动刷新进程/端口/容器/锁列表以自适应节奏刷新初始 3 秒负载高时退避。5. 核心概念与工作原理witr 把一切问题都归约为进程问题端口、服务、容器、命令最终都会映射到 PID。一旦锁定 PIDwitr 就构建一条因果链解释这个 PID 为什么存在。其回答四个问题正在运行的是什么它是如何启动的是什么让它持续运行它属于什么上下文完整调用链对应 internal/app/app.go 的processTarget目标解析target.Resolve(t, exact)把名称/端口/文件/PID 解析为候选 PID 列表多匹配时打印候选并提示witr --pid pid返回退出码 4。端口特例若端口属主为 PID 1 且 systemd 在运行尝试ResolveSystemdService把端口映射回 systemd 单元若 socket 存在但属主进程不可见则尝试ResolveContainerByPort做“端口→容器”回退对应 README 兼容矩阵中的 “Port → Container fallback”用于 systemd socket activation 或容器运行时占端口场景。分析管线pipeline.AnalyzePID执行祖先链解析沿 PPID 向上直到 PID 1、来源检测、子进程收集tree/verbose 模式、扩展信息读取内存、I/O、fd、线程数、restart 计数systemdNRestarts与警告生成。来源检测internal/source/detect.go 的Detect按优先级依次尝试容器 → SSH → Shell含 tmux/screen→ systemd → launchd → BSD rc → supervisor → cron → Windows 服务 → init → unknown。只选取一个主来源避免误报。渲染按--json/--warnings/--tree/--short/标准模式分别渲染见 internal/output/standard.go 等。6. 实战示例输出6.1 按名称查询witr nodeTarget : node Process : node (pid 14233) User : pm2 Command : node index.js Started : 2 days ago (Mon 2025-02-02 11:42:10 05:30) Why It Exists : systemd (pid 1) → pm2 (pid 5034) → node (pid 14233) Source : pm2 Working Dir : /opt/apps/expense-manager Git Repo : expense-manager (main) Sockets : 127.0.0.1:5001 (TCP | LISTENING)6.2 短输出适合脚本witr --port 5000 --shortsystemd (pid 1) → PM2 v5.3.1: God (pid 1481580) → python (pid 1482060)6.3 树状输出witr --pid 143895 --treesystemd (pid 1) └─ init-systemd(Ub (pid 2) └─ SessionLeader (pid 143858) └─ Relay(143860) (pid 143859) └─ bash (pid 143860) └─ sh (pid 143886) └─ node (pid 143895) ├─ node (pid 143930) ├─ node (pid 144189) └─ node (pid 144234)注意树视图会包含子进程最多 10 个并高亮目标进程对应 internal/pipeline/analyze.go 中按 PID 排序收集子进程的逻辑。6.4 多匹配witr ngMultiple matching processes found: [1] nginx (pid 2311) nginx -g daemon off; [2] nginx (pid 24891) nginx -g daemon off; [3] ngrok (pid 14233) ngrok http 5000 Re-run with: witr --pid pid避免子串匹配、只找精确名称时用-x/--exactwitr nginx -x6.5 文件查询witr --file /var/lib/dpkg/lock解释持有该文件锁的进程。若文件被其他用户的进程持有且无权限读取Linux 下会提示加sudo重试见 internal/app/app.go 的handleResolveError。6.6 容器查询witr --container redis按名称、镜像、命令或 compose project/service 在每一个已检测到的运行时Docker、Podman、nerdctl、K8s/crictl、Incus、LXC、LXD、FreeBSD jails中查找容器加--verbose可让输出包含挂载、网络与 compose 元数据。6.7 多输入混合witr nginx --port 5432 --pid 1234----- [name: nginx] ----- Target : nginx Process : nginx (pid 2311) ... ----- [port: 5432] ----- Target : postgres Process : postgres (pid 891) ... ----- [pid: 1234] ----- Target : node Process : node (pid 1234) ...所有目标 flag 可重复、可混合结果按输入顺序输出--short、--tree、--json、--env、--warnings、--verbose均支持多输入。多目标 JSON 模式下internal/app/app.go 会把各结果包装成 JSON 数组输出。7. 输出行为与退出码7.1 输出原则默认单屏显示尽力而为确定性排序如 socket 按地址分组、端口升序、LISTEN 优先于 ESTABLISHED见 internal/output/standard.go 的sortSockets叙事式解释尽力检测且对不确定信息明确标注7.2 退出码witr 返回有意义的退出码便于脚本、CI 流水线与监控使用常量定义在 internal/app/app.goCode含义0干净找到进程无警告1有警告找到进程但存在一条或多条警告2未找到没有匹配的进程或服务3权限不足权限不够4非法输入参数错误或匹配有歧义5内部错误发生了意外失败脚本用法示例witr nginx --short case $? in 0) echo All clear ;; 1) echo Warnings detected ;; 2) echo Process not running ;; 3) echo Need elevated privileges ;; 4) echo Invalid input or ambiguous match ;; 5) echo Internal error ;; esac多目标查询时witr 会取所有目标中最高的退出码返回并在 stderr 说明。错误归类逻辑见classifyError权限类错误permission denied 等→ 3未找到类no matching/not found 等→ 2非法输入invalid/must specify→ 4其余 → 5。7.3 标准输出的各段含义Target用户查询的目标如进程名、端口号、PID、文件路径或容器名。Process可执行文件、PID、用户、命令、启动时间与重启次数重启次数取自 systemdNRestarts仅当 ≥1 时显示。Why It Exists因果祖先链解释进程为何存在——这是 witr 的核心价值。Source负责启动或监督该进程的主系统尽力而为只选一个。例如systemd unitLinux含 timer 触发服务的调度信息launchd servicemacOS含 schedule/trigger 详情SSH 会话含远端 IP 与终端docker containerpm2cron交互式 Shell可识别 tmux/screen 会话Snap/Flatpak 沙箱LinuxContext尽力而为工作目录、Git 仓库名与分支、容器名/镜像docker、podman、kubernetes、colima、containerd、公网/私网绑定。Warnings非阻塞性观察例如完整规则见 internal/source/detect.go 的Warnings函数与 README 第 7.3 节进程以 root 运行非 root 进程携带危险 Linux capabilitiesCAP_SYS_ADMIN、CAP_SYS_PTRACE、CAP_NET_RAW、CAP_DAC_OVERRIDE等见源码中的dangerousCapabilities集合进程监听公网接口0.0.0.0/::服务被重启多次超过阈值才告警源码中阈值为NRestarts 5高内存占用1GB RSS或高 CPU2h 累计进程已运行超过 90 天二进制文件已被删除可能是库注入或待更新或环境变量中出现LD_PRELOAD/DYLD_*潜在库注入进程为 zombiedefunct、stoppedT 状态、工作目录可疑/、/tmp、/var/tmp、容器未配置 healthcheck、服务名与进程名不匹配、无已知 supervisor 等对于端口查询--verbose下还会输出 socket 状态及人类可读的解释与处置建议如TIME_WAIT提示“等待约 60s 或启用 SO_REUSEADDR”、CLOSE_WAIT提示“远端已关闭但应用未响应通常表示资源泄漏请重启进程”详见 internal/source/detect.go 的EnrichSocketInfo。8. 平台支持与功能矩阵Linuxx86_64、arm64完整功能支持基于/proc。macOSx86_64、arm64使用ps、lsof、sysctl、pgrep。Windowsx86_64、arm64原生 Win32 APIToolHelp32、PSAPI、Service Control Manager不依赖 PowerShell 或 WMI启动快且没有Get-CimInstance卡顿问题。FreeBSDx86_64、arm64使用procstat、ps、lsof。8.1 特性兼容矩阵特性LinuxmacOSWindowsFreeBSD备注进程选择按名称✅✅✅✅按 PID✅✅✅✅按端口✅✅✅✅按文件✅✅✅✅按容器✅✅✅✅要求运行时 CLI 在 PATH 中docker/podman/nerdctl/crictl/incus/lxc/lxc-ls/jls多输入/混合输入✅✅✅✅可重复 flag、可混类型精确匹配✅✅✅✅完整命令行✅✅✅✅进程启动时间✅✅✅✅工作目录✅✅✅✅环境变量✅⚠️⚠️✅macOS 受 SIP 限制Windows 受保护进程不可访问网络监听端口✅✅✅✅绑定地址✅✅✅✅端口→PID 解析✅✅✅✅端口→容器回退✅✅✅✅当端口属主为 PID 1systemd socket activation或容器运行时时使用服务检测服务管理器✅✅✅✅Linux: systemdmacOS: launchdWindows: ServicesFreeBSD: rc.d服务描述✅✅✅✅Linux:DescriptionmacOS:CommentWindows:Display NameFreeBSD:rc头配置来源✅✅✅✅Linux: Unit FilemacOS: PlistWindows: Registry KeyFreeBSD: Rc ScriptSupervisor✅✅✅✅容器✅✅✅✅Docker含 compose 映射、Podman、nerdctl、K8sKubepods/crictl、ContainerdmacOS/Linux 的 ColimaLinux 的 Incus/LXC/LXDFreeBSD 的 JailsSSH 会话检测✅✅✅✅可识别远端 IP 与终端tmux/screen 检测✅✅❌✅Source 中展示会话名调度检测✅✅❌❌Linux: systemd timersmacOS: launchd intervals/calendarSnap/Flatpak 检测✅❌❌❌健康与诊断CPU 使用检测✅✅✅✅内存使用检测✅✅✅✅健康状态检测✅✅✅✅打开文件/句柄✅✅⚠️✅Windows 仅计数文件锁✅✅❌✅Linux:/proc/locksmacOS/FreeBSD: 由lsof/fstat推导已删除二进制检测✅✅✅✅可执行文件缺失时告警Capability 告警✅❌❌❌非 root 进程携带危险 capability 时告警上下文Git 仓库/分支检测✅✅✅✅交互模式TUIProcesses 标签页✅✅✅✅Ports 标签页✅✅✅✅Containers 标签页✅✅✅✅Locks 标签页✅✅❌✅按a显示所有打开文件进程详情✅✅✅✅进程操作✅✅❌✅图例✅ 完整支持 | ⚠️ 部分/有限支持 | ❌ 不可用8.2 权限说明Linux/FreeBSDwitr 需要检查系统目录可能需要提权信息不全时用sudo witr [你的参数]。macOS依赖ps、lsof、launchctl部分操作需要提权sudo witr ...因 System Integrity ProtectionSIP即使 sudo 也可能无法访问部分系统进程细节。Windows直接调用 Win32 API无需 PowerShell/WMI。要查看其他用户属主进程或系统服务的详情必须以管理员身份运行终端.\witr.exe [你的参数]。9. 成功标准与适用场景witr 的成败标准见 README 第 9 节是用户在数秒内回答“为什么它在运行”减少对多个工具的依赖在压力故障排查场景下输出仍然可读用户信任它在事故处理中的结论。典型适用场景包括定位突然占用的端口到底属于谁、找出被 supervisor 层层拉起的神秘进程、排查容器内进程的启动来源、判断某个文件锁被哪个进程持有、在 CI/监控脚本中用退出码快速判定服务状态以及在--json模式下做机器可读的进程归因分析。10. 延伸阅读完整命令行手册docs/cli/witr.1roff 格式与 docs/cli/witr.mdMarkdown 格式两者均由 internal/tools/docgen 生成。源码入口与 CLI 装配main.go、cmd/witr/main.go、internal/app/app.go。分析管线与祖先链internal/pipeline/analyze.go、internal/proc/ancestry.go。来源检测与警告规则internal/source/detect.go。目标解析与校验internal/target/resolve.go、pkg/model/target.go。输出渲染internal/output/standard.go 等。交互模式 TUIinternal/tui/model.go 等。容器运行时检测internal/proc/container_detect.go、internal/proc/container_runtime.go。浏览器端模拟演练仓库 docs/index.html 及 docs/js 下的前端实现提供了一套模拟 Linux 环境的引导式教程与自由演练沙箱无需安装即可体验 TUI 与 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),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

STM32图书馆环境监测系统:原理图+仿真+可打板设计 2026/9/13 21:15:59

STM32图书馆环境监测系统:原理图+仿真+可打板设计

1. 项目概述:一个真正能落地的图书馆环境监测系统长什么样?STM32项目开源:图书馆环境监测系统(代码原理图仿真)——这个标题里藏着三个硬核关键词:STM32、原理图、仿真。它不是那种“点亮LED”级别的入门De…

阅读更多 →
边缘AI芯片实战排障:10张硬核工程表破解SoC与SiP部署难题 2026/9/13 21:15:59

边缘AI芯片实战排障:10张硬核工程表破解SoC与SiP部署难题

1. 这10张表不是“速成秘籍”,而是你翻遍芯片手册后亲手画出来的认知地图“边缘AI-4:收藏这10张表,90%的AI芯片文章不用再看了”——这个标题乍看像流量套路,但如果你真在SoC验证岗熬过三个项目、在SiP封装厂跟过两轮BGA重布线、用…

阅读更多 →
Qt应用程序启动与事件循环深度解析 2026/9/13 21:15:59

Qt应用程序启动与事件循环深度解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
AI Agent记忆系统设计:四层架构与工程实践指南 2026/9/13 21:15:59

AI Agent记忆系统设计:四层架构与工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
霞鹜文楷:免费商用的开源中文字体,6 个文件 3 个字重怎么选 2026/9/13 21:15:59

霞鹜文楷:免费商用的开源中文字体,6 个文件 3 个字重怎么选

霞鹜文楷:免费商用的开源中文字体,6 个文件 3 个字重怎么选 【免费下载链接】LxgwWenKai An open-source Chinese font derived from Fontworks Klee One. 一款开源中文字体,基于 FONTWORKS 出品字体 Klee One 衍生。 项目地址: https://g…

阅读更多 →
Wagtail 自定义 StreamField 块完全指南:StructBlock 编辑器定制、客户端交互与迁移安全 2026/9/13 21:12:59

Wagtail 自定义 StreamField 块完全指南:StructBlock 编辑器定制、客户端交互与迁移安全

Wagtail 自定义 StreamField 块完全指南:StructBlock 编辑器定制、客户端交互与迁移安全 【免费下载链接】wagtail A Django content management system focused on flexibility and user experience 项目地址: https://gitcode.com/GitHub_Trending/wa/wagtail …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞