You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
arthas/tutorials/katacoda/case-http-api-cn/one-time-command.md

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也会挂起等待到执行超时。