Files

2.3 KiB

与执行批处理命令类似,一次性命令以同步方式执行。不需要创建会话,不需要设置sessionId{{}} 选项。

{
  "action": "exec",
  "command": "<Arthas command line>"
}

比如获取 Arthas 版本号:

curl -Ss -XPOST http://localhost:8563/api -d '{ "action":"exec", "command":"version" }' | json_pp{{execute T3}}

响应内容如下:

{
  "state": "SUCCEEDED",
  "sessionId": "ee3bc004-4586-43de-bac0-b69d6db7a869",
  "body": {
    "results": [
      {
        "type": "version",
        "version": "3.3.7",
        "jobId": 5
      },
      {
        "jobId": 5,
        "statusCode": 0,
        "type": "status"
      }
    ],
    "timeExpired": false,
    "command": "version",
    "jobStatus": "TERMINATED",
    "jobId": 5
  }
}

响应数据解析:

  • state{{}} : 请求处理状态,参考“接口响应状态”说明
  • sessionId {{}} : Arthas 会话 ID,一次性命令自动创建及销毁临时会话
  • body.jobId{{}} : 命令的任务 ID,同一任务输出的所有 Result 都是相同的 jobId
  • body.jobStatus{{}} : 任务状态,同步执行正常结束为TERMINATED {{}}
  • body.timeExpired{{}} : 任务执行是否超时
  • body/results{{}} : 命令执行的结果列表

命令结果格式说明

[
  {
    "type": "version",
    "version": "3.3.7",
    "jobId": 5
  },
  {
    "jobId": 5,
    "statusCode": 0,
    "type": "status"
  }
]
  • type{{}} : 命令结果类型,除了status{{}} 等特殊的几个外,其它的保持与 Arthas 命令名称一致。请参考"特殊命令结果"小节。
  • jobId{{}} : 处理命令的任务 ID。
  • 其它字段为每个不同命令的数据。

注意:也可以使用一次性命令的方式执行 watch/trace 等连续输出的命令,但不能中断命令执行,可能出现长时间没有结束的问题。请参考"watch 命令输出 map 对象"小节的示例。

请尽量按照以下方式处理:

  • 设置合理的execTimeout{{}} ,到达超时时间后强制中断命令执行,避免长时间挂起。
  • 通过-n{{}} 参数指定较少的执行次数。
  • 保证命令匹配的方法可以成功命中和 condition-express 编写正确,如果 watch/trace 没有命中就算指定-n 1{{}} 也会挂起等待到执行超时。