mirror of
https://github.com/alibaba/arthas.git
synced 2024-04-21 10:21:39 +00:00
78 lines
2.3 KiB
Markdown
78 lines
2.3 KiB
Markdown
与执行批处理命令类似,一次性命令以同步方式执行。不需要创建会话,不需要设置`sessionId`{{}} 选项。
|
|
|
|
```json
|
|
{
|
|
"action": "exec",
|
|
"command": "<Arthas command line>"
|
|
}
|
|
```
|
|
|
|
比如获取 Arthas 版本号:
|
|
|
|
`curl -Ss -XPOST http://localhost:8563/api -d '{ "action":"exec", "command":"version" }' | json_pp`{{execute T3}}
|
|
|
|
响应内容如下:
|
|
|
|
```json
|
|
{
|
|
"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`{{}} : 命令执行的结果列表
|
|
|
|
**命令结果格式说明**
|
|
|
|
```json
|
|
[
|
|
{
|
|
"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`{{}} 也会挂起等待到执行超时。
|