jpsJava Virtual Machine Process Status Tool)
jps是java提供的一个显示当前所有java进程pid的命令,适合在linux/unix平台上简单察看当前java进程的一些简单情况。
很多人都是用过unix系统里的ps命令,这个命令主要是用来显示当前系统的进程情况,有哪些进程以及进程id。
jps 也是一样,它的作用是显示当前系统的java进程情况及进程id。
我们可以通过它来查看我们到底启动了几个java进程(因为每一个java程序都会独占一个java虚拟机实例)
并可通过opt来查看这些进程的详细启动参数。
命令格式如下,options 和 pid 都是可选的,pid就是应用程序的进程号,
命令格式:jps [options ] [ pid ]
输入jps
命令就会展示出当前电脑中所有的java进程,其中前面数字就是pid,后面的英文是应用的名称
jps常用选项如下
命令 | 说明 |
---|---|
-l | 输出主程序的路径全类名 |
-m | 输出main方法的参数 |
-q | 只输出进程号pid,不包括类名,jar 文件名,参数名 |
-v | 输出jvm参数 |
-V | 输出通过flag文件传递到JVM中的参数.hotspotrc文件或-XX:Flags=所指定的文件 |
-Joption | 传递参数到jvm虚拟机 ,例如:-J-Xms512m |
输出主程序的路径全类名 -l
在命令行输入命令,则会展示出进程id和main方法所在路径的全类名
jps -l
输出main方法的参数 -m
在命令行输入以下命令,显示的信息除了进程id和应用程序的名称之外,还可看到main方法输入的参数信息,
先在运行的main方法中加入2个参数,
运行main方法后,可以看到参数中已经有了参数
接着在控制台输入以下jps命令,就可以看到所有main方法中的参数了
jps -m
只输出进程编号pid -q
jps -q
输出jvm参数 -v
一般来说,每个运行的进程都会自带一些jvm,接下来我们往进程里面添加一个参数
然后启动项目,接着在命令行输入以下命令
jps -v
打印的结果中就可以找到我梦刚刚输入的jvm参数,还有其他的参数是idea在启动时自带的,我们忽略就好;
组合命令 -mlv
除了可以单个命令打印之外,也可以多个命令一起使用,只不过输出的信息有点多而已,输入以下命令
jps -mlv
远程连接jps
服务端配置
首先,需要在服务端开启一个策略,新建一个策略文件vim jstatd.all.policy
,
将下面的代码复制到vim jstatd.all.policy
文件中,注意file目录需要改成你自己的jdk目录,下面的这个示例策略将允许jstatd服务具有JVM全部的访问权限:
grant codebase "file:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/tools.jar" {
permission java.security.AllPermission;
};
然后在服务器当前目录中启动策略
jstatd -J-Djava.security.policy=jstatd.all.policy
客户端配置
在客户端输入命令,远程连接到服务器的jps即可,我这边用了本地来做测试,因为没有远程服务器;:
注意:如果是远程的服务器,需要开启端口权限和防火墙的配置,否则会拒绝连接
jps -l 127.0.0.1
完
还有两个命令-Joption
和 -V
使用的不多,感兴趣的可以自己测试一下,其实jps使用的也不是很多,因为我们一般部署项目都是用linux系统,而linux系统已经自带了 ps 命令,而且比jps强大很多,所以真正用jps的人会比较少;