host.process
查询客户端进程、执行命令并控制流式子进程。
进程接口用于查询客户端进程、执行 shell 命令,以及通过流式输入输出控制子进程。
下文的 host 是已选择的 RemoteHost,获取方式见主机发现。权限与通用错误见模块概览。
所有查询需要 process.enabled;exec()、spawn() 另需 process.allow_exec。
host.process.list()
功能: 获取按 PID 排序的进程快照。
参数: 无。
返回值: AsyncIterableIterator<ProcessInfo>。首次 next() 采样,迭代结束、return() 或 break 释放快照。
host.process.get(pid)
功能: 查询指定进程。
参数: pid: number 必填,为目标进程 ID。
返回值: Promise<ProcessInfo | null>。进程不存在或不再可见时为 null。
ProcessInfo
| 字段 | 类型 | 说明 |
|---|---|---|
pid | number | 进程 ID |
parentPid | number / null | 父进程 ID |
name、exe、status | string / null | 名称、可执行路径、状态 |
commandLine | readonly string[] / null | 命令行参数 |
startTime | Date / null | 客户端上的进程开始时间 |
cpuUsage | number / null | CPU 百分比,一个逻辑核心满载为 100 |
memoryBytes | number / null | 常驻内存字节数 |
这些字段均只读,不可采集的字段返回 null。
host.process.exec(command)
功能: 执行 shell 命令,自动发送 stdin EOF,并收集完整 stdout 和 stderr。
参数: command: string 必填。命令继承客户端工作目录、环境变量和系统用户权限;Linux / macOS 使用 /bin/sh -c,Windows 使用 cmd.exe /d /s /c。
返回值: Promise<ProcessResult>,含 stdout: Uint8Array、stderr: Uint8Array、exitCode: number | null、signal: number | null。非零退出码作为结果返回,不自动抛错;Unix 信号退出时 signal 为信号编号,正常退出及 Windows 为 null。
host.process.spawn(command)
功能: 启动 shell 子进程,提供流式输入输出。工作目录、环境和 shell 规则与 exec() 相同。
参数: command: string 必填。
返回值: Promise<ChildProcess>,含下列只读属性和 kill() 方法。
| 属性 | 类型 | 说明 |
|---|---|---|
pid | number | 子进程 ID |
commandLine | string | 提交的命令 |
stdout、stderr | ReadableStream<Uint8Array> | 带背压的原始字节输出;取消某一路只关闭该输出管道 |
stdin | WritableStream<Uint8Array> | 关闭 writer 发送 EOF;abort 关闭输入管道 |
status | Promise<ProcessStatus> | { exitCode: number | null, signal: number | null },含义与 exec 一致 |
应并发消费 stdout 和 stderr,写完 stdin 后关闭 writer。只等待 status 可能因输出管道未排空而阻塞;状态完成后仍需读取剩余输出。状态、输出和已提交输入操作均完成后释放进程游标,最后完成的操作也可能报告清理失败。
child.kill()
功能: 强制停止子进程组或 job 并等待子进程被回收。游标释放前,即使 status 已完成,也可以停止后代进程。
参数: 无。
返回值: Promise<void>。
类型声明见 remote.d.ts。
