全栈应用服务器

  • 全栈应用服务器 > API 文档 > 沙箱概述 > 进程与终端

    进程与终端

    最近更新时间: 2026-05-19 18:01:01

    进程与终端

    进程与终端 API 由 envd 的 process.Process Connect RPC 服务提供,用于在沙箱内启动命令、连接已有进程、发送输入、调整 PTY 大小和终止进程。

    调用前请先参考沙箱运行时 API获取 envd Endpoint 和 envdAccessToken

    如需指定沙箱内执行用户,可设置 Authorization: Basic <base64("user:")>。Go SDK 和 qshell 默认使用 user。请求体和响应体使用 protobuf JSON 字段名,也就是 lowerCamelCase。

    Connect RPC 路径

    方法 请求路径 类型 描述
    List /process.Process/List Unary 列出运行中的进程
    Start /process.Process/Start Server streaming 启动进程,并流式返回进程事件
    Connect /process.Process/Connect Server streaming 连接到已有进程,并流式返回进程事件
    Update /process.Process/Update Unary 更新进程配置,目前主要用于调整 PTY 大小
    SendInput /process.Process/SendInput Unary 向进程发送 stdin 或 PTY 输入
    StreamInput /process.Process/StreamInput Client streaming 以客户端流方式发送输入,保证输入顺序
    SendSignal /process.Process/SendSignal Unary 向进程发送信号
    CloseStdin /process.Process/CloseStdin Unary 关闭非 PTY 进程的 stdin

    数据结构

    ProcessConfig

    字段名称 字段类型 描述
    cmd string 可执行命令
    args string[] 命令参数
    envs object 环境变量
    cwd string 工作目录

    PTY

    字段名称 字段类型 描述
    size.cols integer 终端列数
    size.rows integer 终端行数

    ProcessSelector

    通过 PID 或标签选择进程:

    字段名称 字段类型 描述
    pid integer 进程 ID
    tag string 进程标签

    ProcessEvent

    StartConnect 返回进程事件流:

    事件 字段 描述
    start pid 进程已启动并分配 PID
    data stdout / stderr / pty 进程输出;JSON 协议中二进制字段按 base64 表示
    end exitCode / exited / status / error 进程结束事件
    keepalive 保活事件

    列出进程

    请求路径

    POST /process.Process/List
    

    请求参数

    请求体为空对象:

    {}
    

    响应字段

    字段名称 字段类型 描述
    processes[].config object 进程启动配置
    processes[].pid integer 进程 ID
    processes[].tag string 进程标签

    请求示例

    curl -X POST "$ENVD_API_BASE/process.Process/List" \
      -H "X-Access-Token: $ENVD_ACCESS_TOKEN" \
      -H "Authorization: Basic dXNlcjo=" \
      -H "Connect-Protocol-Version: 1" \
      -H "Content-Type: application/json" \
      -d '{}'
    

    启动进程

    请求路径

    POST /process.Process/Start
    

    请求参数

    参数名称 参数类型 必填 描述
    process object 进程配置
    pty object PTY 配置;传入后进程以伪终端方式运行
    tag string 进程标签
    stdin boolean 是否打开 stdin;兼容字段,默认行为由服务端决定

    请求示例

    启动普通命令:

    curl -N -X POST "$ENVD_API_BASE/process.Process/Start" \
      -H "X-Access-Token: $ENVD_ACCESS_TOKEN" \
      -H "Authorization: Basic dXNlcjo=" \
      -H "Connect-Protocol-Version: 1" \
      -H "Content-Type: application/json" \
      -d '{
        "process": {
          "cmd": "bash",
          "args": ["-lc", "echo hello"]
        },
        "tag": "hello"
      }'
    

    启动 PTY:

    {
      "process": {
        "cmd": "bash",
        "args": ["-i", "-l"],
        "envs": {
          "TERM": "xterm"
        },
        "cwd": "/home/user"
      },
      "pty": {
        "size": {
          "cols": 80,
          "rows": 24
        }
      },
      "tag": "terminal"
    }
    

    连接已有进程

    请求路径

    POST /process.Process/Connect
    

    请求参数

    参数名称 参数类型 必填 描述
    process.pid integer 二选一 通过 PID 连接进程
    process.tag string 二选一 通过标签连接进程

    请求示例

    {
      "process": {
        "pid": 1234
      }
    }
    

    发送输入

    请求路径

    POST /process.Process/SendInput
    

    请求参数

    参数名称 参数类型 必填 描述
    process object 进程选择器
    input.stdin bytes 二选一 非 PTY 进程 stdin 输入
    input.pty bytes 二选一 PTY 输入

    JSON 协议中,bytes 字段使用 base64 表示。

    请求示例

    {
      "process": {
        "tag": "terminal"
      },
      "input": {
        "pty": "ZWNobyBoZWxsbwo="
      }
    }
    

    调整 PTY 大小

    请求路径

    POST /process.Process/Update
    

    请求参数

    参数名称 参数类型 必填 描述
    process object 进程选择器
    pty.size.cols integer 新的终端列数
    pty.size.rows integer 新的终端行数

    请求示例

    {
      "process": {
        "tag": "terminal"
      },
      "pty": {
        "size": {
          "cols": 120,
          "rows": 40
        }
      }
    }
    

    发送信号

    请求路径

    POST /process.Process/SendSignal
    

    请求参数

    参数名称 参数类型 必填 描述
    process object 进程选择器
    signal stringinteger 信号,可取 SIGNAL_SIGTERM(15)或 SIGNAL_SIGKILL(9)

    关闭 stdin

    请求路径

    POST /process.Process/CloseStdin
    

    请求参数

    参数名称 参数类型 必填 描述
    process object 进程选择器

    CloseStdin 仅适用于非 PTY 进程。PTY 场景请发送 Ctrl+D0x04)表示 EOF。

    相关文档

    以上内容是否对您有帮助?