本文内容基于arthas 3.5.1 版本,介绍基础命令cls,session,version,history的使用及实现。
一.cls命令
清空当前屏幕区域。
文件位于com.taobao.arthas.core.command.basic1000.ClsCommand.java,根据上图所示。
在非终端模式下,将会返回Command 'cls' is only support tty session.。
否则将会执行RenderUtil.cls()。该方法的作用实际返回\u001b[H\u001b[2J为Ansi Escape Codes表示清屏。
二.session命令
查看当前会话的信息,显示当前绑定的pid以及会话id。\
文件位于
com.taobao.arthas.core.command.basic1000.SessionCommand.java
如果有配置tunnel server,还会打印代理id、tunnel服务器的url以及连接状态。
使用了staturl做统计,还会显示statUrl地址。
三.version命令
输出当前目标 Java 进程所加载的 Arthas 版本号。
文件位于com.taobao.arthas.core.command.basic1000.VersionCommand.java\
执行
ArthasBanner.version()获取版本号。
在/com/taobao/arthas/core/res/version路径下获取版本号,该文件会在执行as.package.sh打包脚本的时候生成。
若不存在,则通过ArthasBanner.class.getPackage().getImplementationVersion()从打包的pom.xml文件中获取版本号。
四.history命令
打印命令历史,当前执行的history命令也会被显示。
| 参数名称 | 参数缩写 | 参数说明 | 必填项 | 示例 |
|---|---|---|---|---|
| --clear | -c | 清除历史记录 | 可选 | history -c |
| n | 显示最近执行的n条命令 | 可选 | history 3 |
例子
清空
history -c
查看最近执行的3条指令
history 3
文件位于com.taobao.arthas.core.command.basic1000.HistoryCommand.java
具体实现可以看HistoryManager接口的实现类HistoryManagerImpl。
终端模式下实现在TermImpl类中。
System.getProperty("user.home") + File.separator + ".arthas" + File.separator + "history"
历史记录存放在/Users/用户/.arthas/history文件中。
history命令会通过history的文件获取执行过的历史命令,所以可以看到这台服务器上所有的历史命令。