• jps命令详解


    JPS 名称: jps - Java Virtual Machine Process Status Tool

    命令用法: jps [options] [hostid]

                  options:命令选项,用来对输出格式进行控制

                  hostid:指定特定主机,可以是ip地址和域名, 也可以指定具体协议,端口。

                  [protocol:][[//]hostname][:port][/servername]

                  

    功能描述: jps是用于查看有权访问的hotspot虚拟机的进程. 当未指定hostid时,默认查看本机jvm进程,否者查看指定的hostid机器上的jvm进程,此时hostid所指机器必须开启jstatd服务。 jps可以列出jvm进程lvmid,主类类名,main函数参数, jvm参数,jar名称等信息。

    命令选项及功能:

    没添加option的时候,默认列出VM标示符号和简单的class或jar名称.如下:

    -p  :仅仅显示VM 标示,不显示jar,class, main参数等信息.

    -m:输出主函数传入的参数. 下的hello 就是在执行程序时从命令行输入的参数

    -l: 输出应用程序主类完整package名称或jar完整名称.

    -v: 列出jvm参数, -Xms20m -Xmx50m是启动程序指定的jvm参数

    -V: 输出通过.hotsportrc或-XX:Flags=<filename>指定的jvm参数

    -Joption:传递参数到javac 调用的java lancher.

    概述

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

    如果在 linux 中想查看 java 的进程,一般我们都需要 ps -ef | grep java 来获取进程 ID。
    如果只想获取 Java 程序的进程,可以直接使用 jps 命令来直接查看。

    jps 用法

     
     

    参数说明

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

    [hostid]:远程服务器地址,jps 支持远程调用
    [protocol:][[//]hostname][:port][/servername]
    

    示例一:jps

    无参数:显示进程的ID 和 类的名称
    
     
     

    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;
    };
    

    启动 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 开启在 1099 端口上开启 RMI 服务器。

     
     

    jps 原理

    java程序在启动以后,会在java.io.tmpdir指定的目录下,就是临时文件夹里,生成一个类似于hsperfdata_User的文件夹,这个文件夹里(在Linux中为/tmp/hsperfdata_{userName}/),有几个文件,名字就是java进程的pid,因此列出当前运行的java进程,只是把这个目录里的文件名列一下而已。 至于系统的参数什么,就可以解析这几个文件获得。

    window系统显示如下:


     
     

    从文件中可以看出 1864、4296、12600 跟上面的 jps 命令输出的进程 ID 一致。



    作者:jijs
    链接:https://www.jianshu.com/p/d39b2e208e72
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    MonoDev 冷门而好用的功能
    Android Runtime
    bat调用bat的一个巨坑
    AssetBundles
    赢家不会告诉你的事
    防止过度工程
    如果你不肯向这个世界投降
    《我的互联网方法论》
    Notepad++ HTML格式化
    Python 包的相对导入讲解
  • 原文地址:https://www.cnblogs.com/keystone/p/10789382.html
Copyright © 2020-2023  润新知