SuperAPI AI 工具集

process-detection

通用与其它

查看项目

更新于 10-15 21:36

技能介绍

用途:该技能是 dtwiz 自动插桩的基础,回答“什么在运行、它位于哪里”,并把被插桩的服务可靠地映射到正确的端口。

主要能力:跨平台枚举进程并识别其 PID、完整命令行与工作目录;解析监听端口;检查进程加载的文件或模块;按项目目录关联进程;处理父子进程与包装器/启动器场景;管理进程生命周期。

使用方式:统一入口为 detectProcesses(filterTerm, excludeTerms),对命令行做不区分大小写的子串匹配,并排除工具类进程与自身 PID(os.Getpid())。Unix 使用 ps ax -o pid=,command= 列进程,lsof -a -d cwd -p <pid> -Fn 解析工作目录,lsof -a -i TCP -sTCP:LISTEN -p <pid> -Fn -P 检测监听端口。Windows 使用 PowerShell 的 Get-CimInstance Win32_Process(含 ProcessId、CommandLine、WorkingDirectory)与 Get-NetTCPConnection -State Listen -OwningProcess <pid>。项目关联由 matchingProcessIDs(dirPath, processes) 完成,工作目录以项目路径开头或命令行包含项目路径任一成立即可。端口检测在 3 秒稳定延迟后每 500ms 轮询,15 秒超时,始终排除 4317、4318。停止进程时 Unix 发送 SIGINT 后 Wait,Windows 调用 Kill 并轮询至 PID 消失。

适用场景:需要把运行中的服务与项目目录、端口对应起来的自动插桩流程,尤其是存在包装器、子进程或 os.execl 启动模式的场景。

限制:Unix 的 ps 输出不含 PPID,父子关系需回退到命令行匹配;Windows 每次检测都有 PowerShell 启动开销,应尽量批量查询;运行时专用工具缺失时仍可检测,但 Description 元数据会减少;adoptExeclChildren 在 Unix 上为空操作。