前言

前面我们就已经说了Windows怎么使用Arthas了,那今天我们就来聊一下在Linux下的Arthas的使用

一、准备

我们同样也需要准备一个java程序,启动之后不能停止的,那我就用的死循环程序,下面是一个死循环程序,一直输出a的值

public class test1 {
    public static void main(String[] args) {
        int a = 1;
        while (a==1){
            System.out.println(a);
        }
    }
    
}

二、测试

Linux下测试

Linux下跟Windows下使用步骤差不多,只不过你需要启动的是jar包,你先把程序的jar包放到Arthas的目录下,使用FTP传输就可以了

image-20210604141712276

没有FTP传输工具的,可以关注我们公众号:全栈开发Dream , 回复2获取下载链接

上传完成后,使用命令启动这个jar包,比如我的是test.jar,那我放好之后,进入到jar包的目录,就使用以下命令行启动

image-20210604132531607

java -jar test.jar

然后让这个程序在这里运行不要关闭,我们打开另外一个窗口,启动Arthas

image-20210604141553604

进入Arthas的的目录,输入启动命令,命令如下

java -jar arthas-boot.jar

同样的,选择test前面的数字,启动Arthas

如果你想要检测其他的java程序的话,就输入程序名前面对应的数字

image-20210604141949377

有时候可能会出现端口被占用,那就需要换一个端口执行

java -jar arthas-boot.jar --telnet-port 9988 --http-port -1

当然Linux也是可以用浏览器访问arthas的,但是只能在内置的web,不能在外面的Windows浏览器访问,要是用Windows的浏览器访问链接是找不到的

image-20210603133946503

三、执行

我们先执行一下help,出现的命令跟Windows的是一样的

image-20210602193518949

常用命令

其实上一篇说的,Windows使用的命令在Linux这里也是可以使用的

清理命令是也是可以用的

Windows下是clear,Linux下是cls

1.dashborad仪表板

输入dashborad之后,也会出现仪表板的信息,来回顾一下

仪表板主要有三个部分,第一个是所有的线程状态,第二个是内存使用的情况,第三个是JVM的状态和Windows的信息

这些内容是会刷新的,可根据这些数据对这个程序以及java虚拟机进行监控,需要退出的话按q 或者Ctrl+c即可退出。

image-20210602193745971

2.thread线程板

输入这个命令之后,也会出现一个线程板,这个跟上一篇的Windows的功能的差不多的,显示的是所有线程的情况

image-20210602193908577

每个线程前面会有一个id,输入 thread +对应的id可以查看的该线程的一些信息

image-20210602194011249

3.jad反编译

这个命令是一个反编译的命令,可以把jar包反编译成代码展示在屏幕上,例如我的是test程序,但是我的类好像是test1,那我就输入jad test1,要是我输入jad test的话,他会说这个类没有找到,因为我的类名就是test1

image-20210602195304521

一般的程序的话,就需要安装下面的步骤来输入

jad  包名.类名

我输入jad test1之后,他就会把我这个类的文件反编译出来,显示在这里

回顾一下,第一个红色字体下的是类加载器,第二个是路径,下面的就是源码和反编译的时间了

4.watch监测

前面说过这是监视,有点类似debug那种,可以看到这个类中函数的返回值,那我就简单说一下格式,就不去改动了,一般命令的格式如下,只有这个猎中有方法(函数),才能够用这个命令

watch 包名.类名 方法名 primeFactors returnObj

因为我前面在Windows的时候说过就不再改动了,小伙伴们就自己回去尝试吧,下面是的上一篇文章的代码

public class test {
    public static void main(String[] args) {
        int a = 1;
        while (a==1){
            System.out.println(outs(a));
        }
    }
    
    public static int outs(int x){
        return x;
    }

}

测试这个outs方法,没有包名就把包名省略,那我就输入

watch test outs primeFactors returnObj

可以看到每一次都会输出一个结果,这个结果就是我们预想的 “1” ,同样的在开头也是提示我们,按Q或者Ctrl+C可以退出

image-20210601164716217

当然你也可以不写primeFactors ,直接输入watch test outs primeFactors returnObj,也是会输出数据,但是这个数据是会一直循环输出的,每执行一次就会输出一次,并且这个输出结果会说明是什么类型的,比如这里的Integer类型,同样按Q或者Ctrl+C退出

image-20210601162625926

5.退出Arthas

上次一篇文章说过了就不重复啦,只是退出监控是就使用quit或者exit,要是像退出Arthas整个程序的就使用stop,记住哦。

另外分享一个上次没有说到的小技巧,前面的输入help命令之后会有很多的命令,要是不记得某个单词怎么拼怎么办,别急,只要你记住前面几个单词,后面忘了的话按Tap键会自动帮你填充哦

本次分享就先到这里了,后面还会分享更多关于Arthas的使用,敬请期待哦


全栈开发Dream
13 声望6 粉丝

分享前端编程教程,剖析后端优秀代码,享受全栈开发乐趣!