• jvm 工具类之 —— jps


    简介

    jps 命令类似与 linux 的 ps 命令,但是它只列出系统中所有的 Java 应用程序。 通过 jps 命令可以方便地查看 Java 进程的启动类、传入参数和 Java 虚拟机参数等信息。

    jps用法

    参数说明

    -q 只输出进程 ID
    -m 输出传入 main 方法的参数
    -l 输出完全的包名,应用主类名,jar的完全路径名
    -v 输出jvm参数
    -V 输出通过flag文件传递到JVM中的参数

    示例一:jps

     

     jps 不带参数,默认显示 进程ID 和 启动类的名称。

    示例二:jps -q

    参数 -q 只输出进程ID,而不显示出类的名称

    示例三:jps -m

    参数 -m 可以输出传递给 Java 进程(main 方法)的参数。

    示例四:jps -l

    参数 -l 可以输出主函数的完整路径(类的全路径)。

    示例五:jps -v

    参数 -v 可以显示传递给 Java 虚拟机的参数。

    获取远程服务器 jps 信息

    jps 支持查看远程服务上的 jvm 进程信息。如果需要查看其他机器上的 jvm 进程,需要在待查看机器上启动 jstatd 服务。

    开启 jstatd 服务

    启动 jstatd 服务,需要有足够的权限。 需要使用 Java 的安全策略分配相应的权限。

    步骤一: 创建 jstatd.all.policy 策略文件。

    grant codebase "file:${java.home}/../lib/tools.jar" {
        permission java.security.AllPermission;
    };

    其中 file: 后面是 安装的 jdk 所在路径

    步骤二:修改服务器 hosts 文件中的 IP 地址

    服务器端应该在 /etc/hosts 文件中把本机地址设为本机的 IP 地址。使用 hostname -i 命令查看,如果显示的是 127.0.0.1 或者与本机实际 IP 不一致的话,需要把 /etc/hosts 文件中相应的地址改为本机实际 IP 。

    $hostname -i
    127.0.1.1

    打开 /etc/hosts 文件,找到 127.0.1.1 这一行,将 127.0.1.1 改为本机 ip(通过 ip addr 获取)

    步骤三:启动 jstatd 服务器

    jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.31.241

    -J 参数是一个公共的参数,如 jps、 jstat 等命令都可以接收这个参数。 由于 jps、 jstat 命令本身也是 Java 应用程序, -J 参数可以为 jps 等命令本身设置 Java 虚拟机参数。

    -Djava.security.policy:指定策略文件
    -Djava.rmi.server.hostname:指定服务器的ip地址(可忽略)

    步骤四:开放相关的端口号

    如果 jstatd 命令没有用 -p port 指定端口号的话,默认占用的是 1099 端口,除了该端口,还会占用一个随机端口

    ethan@ubuntu:~/code$ netstat -nap | grep jstatd
    (Not all processes could be identified, non-owned process info
     will not be shown, you would have to be root to see it all.)
    tcp6       0      0 :::1099                 :::*                    LISTEN      3452/jstatd     
    tcp6       0      0 :::34703                :::*                    LISTEN      3452/jstatd     
    unix  2      [ ]         STREAM     CONNECTED     35371    3452/jstatd     

    得到另一个随机端口号为 34703, 防火墙开放 1099 和 34703

    sudo ufw 1099
    sudo ufw 34703

    步骤五:本地连接测试

    C:Userslenovo>jps -l rmi://192.168.2.128
    4056 BusyThread
    3452 sun.tools.jstatd.Jstatd

    如果远程节点jstatd 不是 1099 节点,则 ip 后需要加上端口号,例jps -l rmi://192.168.2.128:12345

    默认情况下, jstatd 开启在 1099 端口上开启 RMI 服务器。

  • 相关阅读:
    [bzoj1797] [Ahoi2009]Mincut 最小割
    [bzoj3343] 教主的魔法
    [bzoj3702] 二叉树
    [bzoj3809] Gty的二逼妹子序列
    JavaScript的面向对象原理之原型链
    javaScript操作DOM深入理解
    BOM浏览器对象模型
    JavaScript
    DAO模式
    使用ADO.NET访问数据库
  • 原文地址:https://www.cnblogs.com/yyy-blog/p/12650364.html
Copyright © 2020-2023  润新知