跳到主要内容

执行命令

刷新 JVM

当添加完宿主机后,点击工具栏右侧的 Arhtas 图标来展开我们的核心组件:

toolwindow

双击 Local JVM 或者单击任意节点后再点击上方工具栏的刷新按钮,会列出当前本地的所有 JVM。

这里我们用 Arthas 官方的 math-game.jar 为例,在 Arthas Home 中,使用 java -jar math-game.jar 运行 math-game。 之后点击刷新按钮,刷新所有的 JVM,然后找到 math-game.jar(上图中的 6608 .\math-game.jar),双击。

执行命令

双击之后,会打开一个文件,在这个文件中,你可以直接输入 Arthas 的命令:

queryconsole

有下面几点值得注意:

  • 每条命令都需要以 ; 结尾
  • 我们提供了语法检查,如果命令存在问题,IDE 将会给出错误提示
  • 即使 IDE 给出了错误,你仍然可以执行命令。我们对实际的执行并没有任何限制,即使命令确实是错误的
备注

为什么使用分号结尾?

  1. 让命令之间的分割更加明显
  2. 实现简单,不需要复杂的语法解析
  3. 可以避免歧义: 例如 sm 命令可以选择性的提供方法名称,那么对于 sm MyClass echo -d 这条命令, 它到底是一个 sm 命令,还是一条 sm 命令加上一条 echo 命令呢?

当然不排除作者实在太菜了,不会写语法解析器这个原因。

选中你想要执行的命令,点击左上角绿色按钮运行按钮来执行。在点击后将会开始创建连接,并 Attach 到 JVM 中来执行你的命令。

当你选中一条命令并且想要执行时,我们会获取你选中的字符串,然后:

  1. 移除命令左右的空格
  2. 将所有换行替换为空格
  3. 移除命令结尾的分号(如果有)
  4. 执行命令

也就是说你可以把一条命令分成多行后再执行。

命令运行后将会打开一个终端,显示运行的结果:

run

执行监听式命令

监听式命令,即命令执行后不会立即退出,例如 watchstack 等命令,它们在没有指定 -n 的情况下永远不会主动退出。

提示

在上一条命令执行完成之前,你无法执行下一条命令。

要想退出此类命令,你需要点击右下角的进度条来手动停止:

stop

退出

点击工具栏或者终端的停止按钮就可以关闭 Arthas 进程。