文章目录
- 启动 math-game
- 启动 arthas
- 查看 dashboard
- 通过 thread 命令来获取到math-game进程的 Main Class
- 通过 jad 来反编译 Main Class
- watch
- 退出 arthas
- 界面
- linux服务器挂不上进程怎么办?
- 其他
- 官网地址
arthas是一款监控工具,内存、进程等。还是阿里的,阿里出品,必定精品,来一起看一下吧。
其实官网文档已经写的非常好了,这里再写一遍主要为了加深记忆 。
启动 math-game
curl -O https://arthas.aliyun.com/math-game.jar
java -jar math-game.jar
math-game是一个简单的程序,每隔一秒生成一个随机数,再执行质因数分解,并打印出分解结果。
刚看到这,我也蒙了,是不是进错网站了?后来才发现原来这是个进程,用来测试的。
启动 arthas
在命令行下面执行(使用和目标进程一致的用户启动,否则可能 attach 失败):
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
执行该程序的用户需要和目标进程具有相同的权限。比如以admin用户来执行:sudo su admin && java -jar arthas-boot.jar 或 sudo -u admin -EH java -jar arthas-boot.jar。
如果 attach 不上目标进程,可以查看~/logs/arthas/ 目录下的日志。
如果下载速度比较慢,可以使用 aliyun 的镜像:java -jar arthas-boot.jar --repo-mirror aliyun --use-http
java -jar arthas-boot.jar -h
打印更多参数信息。
选择应用 java 进程:
$ $ java -jar arthas-boot.jar
* [1]: 35542
[2]: 71560 math-game.jar
math-game进程是第 2 个,则输入 2,再输入回车/enter。Arthas 会 attach 到目标进程上,并输出日志:
[INFO] Try to attach process 71560
[INFO] Attach process 71560 success.
[INFO] arthas-client connect 127.0.0.1 3658
,---. ,------. ,--------.,--. ,--. ,---. ,---.
/ O \ | .--. ''--. .--'| '--' | / O \ ' .-'
| .-. || '--'.' | | | .--. || .-. |`. `-.
| | | || |\ \ | | | | | || | | |.-' |
`--' `--'`--' '--' `--' `--' `--'`--' `--'`-----'
wiki: https://arthas.aliyun.com/doc
version: 3.0.5.20181127201536
pid: 71560
time: 2018-11-28 19:16:24
$
出现这个$
符号,说明挂上了。(实测在自己电脑上成功,在linux服务器上挂不上,估计是哪里有问题)
查看 dashboard
输入dashboard,按回车/enter,会展示当前进程的信息,按ctrl+c可以中断执行。
通过 thread 命令来获取到math-game进程的 Main Class
thread 1会打印线程 ID 1 的栈,通常是 main 函数的线程。
$ thread 1 | grep 'main('
at demo.MathGame.main(MathGame.java:17)
通过 jad 来反编译 Main Class
$ jad demo.MathGame
牛,居然有这个功能。而且反编译出来和源代码一模一样。。。
watch
通过watch命令来查看demo.MathGame#primeFactors函数的返回值:
watch demo.MathGame primeFactors returnObj
退出 arthas
如果只是退出当前的连接,可以用quit或者exit命令。Attach 到目标进程上的 arthas 还会继续运行,端口会保持开放,下次连接时可以直接连接上。
如果想完全退出 arthas,可以执行stop命令。
界面
arthas是支持界面的,默认端口是3658。
linux服务器挂不上进程怎么办?
服务可以启动,输入序号按回车,发现没有反应。
其他
官网地址
https://arthas.aliyun.com/doc/
官网信息已经很全了,从用法到例子一应俱全。