执行命令
刷新 JVM
当添加完宿主机后,点击工具栏右侧的 Arhtas
图标来展开我们的核心组件:
双击 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 的命令:
有下面几点值得注意:
- 每条命令都需要以
;
结尾 - 我们提供了语法检查,如果命令存在问题,IDE 将会给出错误提示
- 即使 IDE 给出了错误,你仍然可以执行命令。我们对实际的执行并没有任何限制,即使命令确实是错误的
备注
为什么使用分号结尾?
- 让命令之间的分割更加明显
- 实现简单,不需要复杂的语法解析
- 可以避免歧义: 例如
sm
命令可以选择性的提供方法名称,那么对于sm MyClass echo -d
这条命令, 它到底是一个sm
命令,还是一条sm
命令加上一条echo
命令呢?
当然不排除作者实在太菜了,不会写语法解析器这个原因。
选中你想要执行的命令,点击左上角绿色按钮运行按钮来执行。在点击后将会开始创建连接,并 Attach 到 JVM 中来执行你的命令。
当你选中一条命令并且想要执行时,我们会获取你选中的字符串,然后:
- 移除命令左右的空格
- 将所有换行替换为空格
- 移除命令结尾的分号(如果有)
- 执行命令
也就是说你可以把一条命令分成多行后再执行。
命令运行后将会打开一个终端,显示运行的结果:
执行监听式命令
监听式命令,即命令执行后不会立即退出,例如 watch
、stack
等命令,它们在没有指定 -n
的情况下永远不会主动退出。
提示
在上一条命令执行完成之前,你无法执行下一条命令。
要想退出此类命令,你需要点击右下角的进度条来手动停止:
退出
点击工具栏或者终端的停止按钮就可以关闭 Arthas 进程。