本文内容基于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
的文件获取执行过的历史命令,所以可以看到这台服务器上所有的历史命令。