欢迎您, 来到 宁时修博客.^_^

Java程序线上排查命令----01、jps

2018/09/04 言则行 Java,linux命令 871
Java程序的问题排查命令

一、jps的简介

    jps (Java Virtual Machine Process Status Tool)是JDK提供的一个显示当前系统中的所有 Java进程pid的命令,适合查看Java进程的简单情况。通过 jps 命令可以方便地查看 Java 进程的启动类、传入参数和 Java 虚拟机参数等信息。

    jps是Java自带的命令,路径:$JAVA_HOME/bin/jps。

    

    官方文档:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jps.html



二、原理

    jps命令的实现机制:

    Java程序在启动以后,会在 java.io.tmpdir指定的目录下,即 /tmp下,生成一个 hsperfdata_${USER}的目录,如:/tmp/hsperfdata_root,该目录下的文件名是Java进程的pid,因此列出当前运行的Java进程,只是把这个路径下的文件名列一下。至于系统参数,可以解析这几个文件获得。

[root@test-web-server hsperfdata_root]# pwd
/tmp/hsperfdata_root
[root@test-web-server hsperfdata_root]# ll
total 64
-rw------- 1 root root 32768 Sep  4 11:03 6021
-rw------- 1 root root 32768 Sep  4 11:03 6051

    以上是我实验机上的,6021和6051是该系统中运行的Java进程的pid,用jps验证:

[root@test-web-server hsperfdata_root]# jps
6051 Bootstrap
5188 Jps
6021 Application




三、使用参数

    查看命令帮助: jps --help

[root@test-web-server ~]# jps -help
usage: jps [-help]
       jps [-q] [-mlvV] [<hostid>]

Definitions:
    <hostid>:      <hostname>[:<port>]


    参数说明:

-q   只输出进程 pid,不显示class名称、jar包名和传递给main方法的参数。
-m   输出传递给main方法的参数,在嵌入式jvm上可能是null。
-l   输出应用程序的main class,完整的package名称或应用程序的jar包文件路径。
-v   输出jvm的参数。
-V   隐藏输出JVM的参数。



    示例: jps

[root@test-web-server ~]# jps
5958 Jps
20758 Elasticsearch
20558 Logstash
12495 cerebro.cerebro-0.8.3-launcher.jar


    示例: jps -q

[root@test-web-server ~]# jps -q
20758
6024
20558
12495


    示例: jps -m

[root@test-web-server ~]# jps -m
20758 Elasticsearch -p /var/run/elasticsearch/elasticsearch.pid --quiet
6139 Jps -m
20558 Logstash --path.settings /etc/logstash
12495 cerebro.cerebro-0.8.3-launcher.jar


    示例: jps -l

[root@test-web-server ~]# jps -l
6197 jdk.jcmd/sun.tools.jps.Jps
20758 org.elasticsearch.bootstrap.Elasticsearch
20558 org.logstash.Logstash
12495 /usr/local/cerebro-0.8.3/lib/cerebro.cerebro-0.8.3-launcher.jar


    示例: jps -v

[root@test-web-server ~]# jps -v
20758 Elasticsearch -Xms2g -Xmx2g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.io.tmpdir=/tmp/elasticsearch-9734126291532947081 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/lib/elasticsearch -XX:ErrorFile=/var/log/elasticsearch/hs_err_pid%p.log -Xlog:gc*,gc+age=trace,safepoint:file=/var/log/elasticsearch/gc.log:utctime,pid,tags:filecount=32,filesize=64m -Djava.locale.providers=COMPAT -Dio.netty.allocator.type=pooled -Des.path.home=/usr/share/elasticsearch -Des.path.conf=/etc/elasticsearch -Des.distribution.flavor=default -Des.distribution.type=rpm -Des.bundled_jdk=true
6346 Jps -Dapplication.home=/usr/share/elasticsearch/jdk -Xms8m -Djdk.module.main=jdk.jcmd
20558 Logstash -Xms2g -Xmx2g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djruby.compile.invokedynamic=true -Djruby.jit.threshold=0 -XX:+HeapDumpOnOutOfMemoryError -Djava.security.egd=file:/dev/urandom
12495 cerebro.cerebro-0.8.3-launcher.jar -Duser.dir=/usr/local/cerebro-0.8.3


    示例: jps -V

[root@test-web-server ~]# jps -V
20758 Elasticsearch
6365 Jps
20558 Logstash
12495 cerebro.cerebro-0.8.3-launcher.jar


点赞
说说你的看法

所有评论: (0)

# 加入组织

1、用手机QQ扫左侧二维码

2、搜Q群:1058582137

3、点击 宁时修博客交流群