Arthas进阶学习(常用命令)
Step1
下载demo-arthas-spring-boot.jar
,再用java -jar
命令启动:
wget https://github.com/hengyunabc/katacoda-scenarios/raw/master/demo-arthas-spring-boot.jar java -jar demo-arthas-spring-boot.jar --server.port=1945
下载了jar包,因为该项目默认是80端口,而主机上80端口已经被占用,所以启动时设置了端口号--server.port=1945(2019年4月5日)
Step2
启动"arthas"
java -jar arthas-boot.jar --target-ip 0.0.0.0
选择刚才的项目
输入"help"可查看命令
Step3
sysprop
sysprop
可以打印所有的System Properties信息。
也可以指定单个key: sysprop java.version
也可以通过grep
来过滤: sysprop | grep user
可以设置新的value: sysprop testKey testValue
sysenv
sysenv
命令可以获取到环境变量,比如ssh登录的ip等。
jvm
jvm
命令会打印出JVM
的各种详细信息。
dashboard
dashboard
命令可以查看当前系统的实时数据面板,每5s更新一次。
输入 Q
或者 Ctrl+C
可以退出dashboard命令
Step4
Tips
为了更好使用Arthas,下面先介绍Arthas里的一些使用技巧。
help
Arthas里每一个命令都有详细的帮助信息。可以用-h
来查看。帮助信息里有EXAMPLES
和WIKI
链接。
比如:
sysprop -h
自动补全
Arthas支持丰富的自动补全功能,在使用有疑惑时,可以输入Tab
来获取更多信息。
比如输入 sysprop java.
之后,再输入Tab
,会补全出对应的key:
readline的快捷键支持
Arthas支持常见的命令行快捷键,比如Ctrl + A
跳转行首,Ctrl + E
跳转行尾。
更多的快捷键可以用 keymap
命令查看。
历史命令的补全
如果想再执行之前的命令,可以在输入一半时,按Up/↑
或者 Ddown/↓
,来匹配到之前的命令。
比如之前执行过sysprop java.version
,那么在输入sysprop ja
之后,可以输入Up/↑
,就会自动补全为sysprop java.version
。
如果想查看所有的历史命令,也可以通过 history
命令查看到。
pipeline
Arthas支持在pipeline之后,执行一些简单的命令,比如:
sysprop | grep java
sysprop | wc -l (总共的行)
Step5
sc/sm 查看已加载的类
下面介绍Arthas里查找已加载类的命令。
sc
sc
命令可以查找到所有JVM已经加载到的类。
如果搜索的是接口,还会搜索所有的实现类。比如查看所有的Filter
实现类:
sc javax.servlet.Filter
通过-d
参数,可以打印出类加载的具体信息,很方便查找类加载问题。
sc -d javax.servlet.Filter
sc
支持通配,比如搜索所有的StringUtils
:
sc *StringUtils
sm
sm
命令则是查找类的具体函数。比如:
sm java.math.RoundingMode
通过-d
参数可以打印函数的具体属性:
sm -d java.math.RoundingMode
也可以查找特定的函数,比如查找构造函数:
sm java.math.RoundingMode <init>
Step6
Jad
可以通过 jad
命令来反编译代码:
jad com.example.demo.arthas.user.UserController
通过--source-only
参数可以只打印出在反编译的源代码:
jad --source-only com.example.demo.arthas.user.UserController
Step7
Ognl
在Arthas里,有一个单独的ognl
命令,可以动态执行代码。
调用static函数
ognl '@java.lang.System@out.println("hello ognl")'
可以检查"demo-arthas-spring-boot.jar "
里的进程输出,可以发现打印出了hello ognl
。
获取静态类的静态字段
获取UserController
类里的logger
字段:
ognl -c 1be6f5c3 @com.example.demo.arthas.user.UserController@logger
还可以通过-x
参数控制返回值的展开层数。比如:
ognl -c 1be6f5c3 -x 2 @com.example.demo.arthas.user.UserController@logger
执行多行表达式,赋值给临时变量,返回一个List
ognl '#value1=@System@getProperty("java.home"), #value2=@System@getProperty("java.runtime.name"), {#value1, #value2}'
更多
在Arthas里ognl
表达式是很重要的功能,在很多命令里都可以使用ognl
表达式。
一些更复杂的用法,可以参考:
- OGNL特殊用法请参考:https://github.com/alibaba/arthas/issues/71
- OGNL表达式官方指南:https://commons.apache.org/proper/commons-ognl/language-guide.html
Arthas 进阶的案例
https://www.cnblogs.com/theRhyme/p/10660287.html
来源:https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-advanced
Arthas进阶学习(常用命令)的更多相关文章
- linux系统学习(常用命令)
今天调休,闲来无事,研究一下linux系统. Linux常用命令: 一:文件管理 ctrl+alt:在虚拟机与windows之间切换ctrl+g:进入linux输入模式 pwd:查看当前目录 ls:列 ...
- memcached学习——常用命令+基于java客户端的3种简单实现(二)
常用命令: memcached设计的原则就是简单,所以支持的命令也不是特别多~ 1.查看memcached的状态,主要用于分析内存的使用状况.优化内存分配等 stats 查看memcached的运行状 ...
- go语言学习-常用命令(四)
go常用命令 go get:获取远程包(得装git) go run:直接运行程序(写代码时调试用) go build:测试编译,检查是否有编译错误 go fmt:格式化代码(一般不咋用,IDE都自带了 ...
- Linux学习常用命令大全
Linux知识大全 转载须说明出处,整理不易 一.常用的linux命令 1.2 ls 命令说明 1.3 ls 通配符的使用 2.切换目录cd命令 3.创建和删除文件操作 4.移动和拷贝文件 4.3.m ...
- 重学Python - Day 07 - python基础 -> linux命令行学习 -- 常用命令 一
常用命令和使用方法如下: man man 命令 #可以查询命令的用法 cat 和 tac cat是正序显示文件内容 tac是倒叙显示文件内容 sort 对文件内容排序 uniq 忽略文件中重复行 hi ...
- Git进阶:常用命令和问题案例整理
一.前言 整理常用git命令和以及在实际使用的过程中碰到的问题案例,旨在git进阶,提升工作开发效率,有需要补充的小伙伴欢迎下方留言,本篇持续更新中... 二.命令 配置用户名和邮箱 git conf ...
- Linux入门学习 常用命令
cd命令 功能是切换到指定的目录:命令格式:cd [目录名]有几个符号作为目录名有特殊的含义:"/"代表根目录.".."代表上一级目录."~" ...
- go语言学习-常用命令
前面的文章中记录了安装 golang 和配置开发环境,本文将学习的 go 命令行命令以及使用场景. 查看可用命令 直接在终端中输入 go help 即可显示所有的 go 命令以及相应命令功能简介,主要 ...
- linux 学习 常用命令
以下命令是本人的CentOS6.5系统 一.linux个目录的作用 #linux个目录的作用 /bin 所有用户都可使用的命令 /sbin 超级用户(root)可以使用的命令 /boot 系统目录建 ...
随机推荐
- pascalcontext-fcn全卷积网络结构理解
一.说明 fcn的开源代码:https://github.com/shelhamer/fcn.berkeleyvision.org 论文地址:fully convolutional networks ...
- 联想IDEAPAD 320C-15笔记本显卡驱动问题
联想IDEAPAD 320C-15笔记本显卡驱动问题核显Intel(R) HD Graphics 620独显AMD Radeon(TM) 530必须安装好核显驱动,独显驱动才能正常工作,否则设备管理器 ...
- maven编译下载源码
下载源码 mvn dependency:sources 跳过TEST mvn -DskipTests
- 转载:mongodb的两阶段提交实战
项目中用到了mongodb(3.x版本),业务上需要操作mongodb的多个collections,希望要么同时操作成功,要么回滚操作保持数据的一致性,这个实际上要求在mongodb上实现事务功能,在 ...
- http协议和telnet指令讲解
http协议: 1.http:是网络传输协议:全称为:超文本传输协议: 关系:客户端和服务器的关系: 协议:就是一种规范: 常见的http和https两种,https是http的升级版 http协议: ...
- su: Authentication failure问题
问题: su命令不能切换root,提示错误su: Authentication failure 解决: 使用命令 sudo passwd root 下次再su的时候只要输入密码就可以成功登录了.
- MFC 解决中文乱码问题
新的编译工具默认的是unicode编码方式,许多在多字节下面显示中文的方法已经不再适用了按照道理说设置为unicode编码后应该会很好的支持中文, 但是实际情况很悲惨,显示的都是乱码. 看到网上的很多 ...
- c#+CAD动态移动效果
public class MoveRotateScaleJig : DrawJig { public static List<Entity> entities = new List< ...
- 判断单向连通图(拓扑排序+tarjan缩点)
题意: 给你一个有向图,如果对于图中的任意一对点u和v都有一条从u到v的路或从v到u的路,那么就输出’Yes’,否则输出’No’. 理解:当出现两个及以上入度为0的点(有一个就可能是别人到它,有两个的 ...
- Java使用Jedis操作Redis大全
Java操作Redis需要导入两个jar: commons-pool2-2.4.2.jar jedis-2.1.0.jar package com.chinasofti.test; import ja ...