JVM:jps虚拟机进程状态工具(JDK1.8)

一、概述

jps命令可以查看当前所有java进程pid的命令。jps命令格式:

jps [options ] [ hostid ]
[options]选项 作用
-q 仅输出VM标识符,不包括classname,jar name,arguments in main method
-m 输出main method的参数
-l 输出完全的包名,应用主类名,jar的完全路径名
-v 输出jvm参数
-V 输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件)
-Joption 传递参数到vm,例如:-J-Xms512m

二、hostid

指定特定主机,可以是ip地址和域名, 也可以指定具体协议,端口。
[protocol:][[//]hostname][:port][/servername]

jps hostid用于查看指定机器上的jvm进程,此时hostid所指机器必须开启jstatd服务。

三、jstatd

命令jstatd是一个RMI服务程序,它的作用相当于代理服务器,建立本地计算机与远程监控工具的通信。
直接启动回报如下错误:

[root@localhost]# jstatd
Could not create remote object
access denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses" "write")
java.security.AccessControlException: access denied ("java.util.PropertyPermission" 
"java.rmi.server.ignoreSubClasses" "write")
	at java.security.AccessControlContext.checkPermission(AccessControlContext.java:372)
	at java.security.AccessController.checkPermission(AccessController.java:559)
	at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
	at java.lang.System.setProperty(System.java:783)
	at sun.tools.jstatd.Jstatd.main(Jstatd.java:139)

这是因为jstatd没有足够的权限
在任意目录下创建一个文件,只要以.policy结尾,这里为jstatd.all.policy:

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

启动,默认端口是1099:

[root@localhost]# jstatd -J-Djava.security.policy=/opt/config/jstatd.all.policy -J-Djava.rmi.server.hostname=127.xxx.x.0 &

远程查看java进程:

[root@localhost]# jps 127.xxx.x.0
10513 Main
8069 QuorumPeerMain
32394 Jstatd
31563 Main
8108 Main
8174 Main

你可能感兴趣的:(后端,java,java-ee,开发语言)