mirror of
https://github.com/alibaba/arthas.git
synced 2024-04-21 10:21:39 +00:00
2.3 KiB
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 都是相同的 jobIdbody.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{{}} 也会挂起等待到执行超时。