JAVA命令学习系列——jps

(http://www.hollischuang.com/archives/303)

jsp位于jdk的bin目录下(/usr/lib/jvm/java/bin),其作用是现实当前系统的Java进程情况,及其id号,jps 并不使用应用程序名来查找JVM实例。因此,它查找所有的Java应用程序,包括及时没有使用Java执行体的那种(例如,定制的启动器)。另外,jps仅查找当前用户的Java进程,而不是当前系统中所有进程。
原理
jdk中的jps命令可以显示当前运行的Java进程以及相关参数,它的实现机制如下:

Java程序在启动以后,会在java.io.tmpdir指定的目录下,就是临时文件夹是,生成一个类似于hsperfdaa_User的文件夹(直接就是cd /tmp/hsperfdata_username)这个文件夹里有几个文件,名字就是java进程的pid,可以通过解析这几个文件获得系统的参数。(其中有jsp使用进程的pid,因为它也是java命令也要开一个进程)。

jps失效处理
现象:用ps -ef|grep java 能看到启动的java进程,但是用jps查看却不存在该进程id。在该情况下jconsole/jvidualvm可能无法监控该进程,其他java自带工具可能也无法使用。
分析
jps、jconsole、jvisualvm等工具的数据来源就是这个文件*(/tmp/hsperfdata_userName/pid)所以当该文件不存在或是无法读取时就会出现jps无法查看该进程号,jconsole无法监控等问题。
原因
(1)、磁盘读写、目录权限问题 若该用户没有权限写/tmp目录或是磁盘已满,则无法创建/tmp/hsperfdata_userName/pid文件。或该文件已经生成,但用户没有读权限

(2)、临时文件丢失,被删除或是定期清理 对于linux机器,一般都会存在定时任务对临时文件夹进行清理,导致/tmp目录被清空。这也是我第一次碰到该现象的原因。常用的可能定时删除临时目录的工具为crontab、redhat的tmpwatch、ubuntu的tmpreaper等等

这个导致的现象可能会是这样,用jconsole监控进程,发现在某一时段后进程仍然存在,但是却没有监控信息了。

(3)、java进程信息文件存储地址被设置,不在/tmp目录下 上面我们在介绍时说默认会在/tmp/hsperfdata_userName目录保存进程信息,但由于以上1、2所述原因,可能导致该文件无法生成或是丢失,所以java启动时提供了参数(-Djava.io.tmpdir),可以对这个文件的位置进行设置,而jps、jconsole都只会从/tmp目录读取,而无法从设置后的目录读物信息,这是我第二次碰到该现象的原因

在Linux系统中,Java命令是用于执行Java程序的命令,而jpsJava Virtual Machine Process Status Tool的缩写,用于显示当前运行的Java进程。这两个命令的功能不同,因此不能通用。 Java命令Java Development Kit(JDK)中的一部分,它允许我们在Linux系统上编译和运行Java代码。通过Java命令,我们可以指定要运行的Java类的主函数,以及其他相关参数,如类路径、堆大小等。Java命令可以启动一个Java虚拟机(JVM)实例,并执行指定的Java代码。 而jps是一种用于管理和监视正在运行的Java应用程序和虚拟机的命令行工具。它可以显示出当前系统中运行的所有Java进程的ID以及对应的类名。通过jps命令,我们可以方便地查看Java程序的运行状态,比如正在运行的Java进程的内存占用情况、线程信息等。这对于诊断和监控Java应用程序的运行非常有用。 尽管Java命令jps都与Java相关,但它们的主要用途和功能不同。Java命令主要用于在Linux上编译和运行Java程序,而jps主要用于查看Java进程的运行状态。因此,Linux系统下可以正确执行Java命令,但不能直接使用jps命令,这是由于jps命令不是Linux系统默认支持的命令。要使用jps命令,我们需要先安装Java Development Kit,并将其添加到系统的环境变量中。 总结来说,Linux系统中Java命令用于编译和运行Java程序,而jps命令用于查看Java进程的运行状态。两者功能不同,因此无法通用。要使用jps命令,需要先安装Java Development Kit,并将其添加到系统的环境变量中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值