`

Jps介绍以及解决jps无法查看某个已经启动的java进程问题

阅读更多

对于jps较熟悉可以直接查看第二部分的分析

 

1、jps的作用

jps类似linux的ps命令,不同的是ps是用来显示进程,而jps只显示java进程,准确的说是当前用户已启动的部分java进程信息,信息包括进程号和简短的进程command。

 

2、某个java进程已经启动,用jps却显示不了该进程进程号

这个问题已经碰到过两次了,所以在这里总结下。

现象:

用ps -ef|grep java能看到启动的java进程,但是用jps查看却不存在该进程的id。待会儿解释过之后就能知道在该情况下,jconsole、jvisualvm可能无法监控该进程,其他java自带工具也可能无法使用

 

分析:

java程序启动后,默认(请注意是默认)会在/tmp/hsperfdata_userName目录下以该进程的id为文件名新建文件,并在该文件中存储jvm运行的相关信息,其中的userName为当前的用户名,/tmp/hsperfdata_userName目录会存放该用户所有已经启动的java进程信息。对于windows机器/tmp用Windows存放临时文件目录代替。

 

而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目录读取,而无法从设置后的目录读物信息,这是我第二次碰到该现象的原因

 

关于设置该文件位置的参数为-Djava.io.tmpdir

 

其他:

/tmp/hsperfdata_userName/pid文件会在对应java进程退出后被清除。如果java进程非正常退出(如kill -9),那么pid文件会被保留,直到执行一次java命令或是加载了jvm程序的命令(如jps、javac、jstat),会将所有无用的pid文件都清除掉

分享到:
评论

相关推荐

    jps脚本 shell脚本

    在一个集群非常大的情况下,如果想要查看单个主机在运行哪些java进程。我们可以去到每个主机下,使用jps命令。可是这种方法太过低效。我们可以使用一个shell脚本来完成此命令。查看进程 jps脚本 提前配置免密

    Linux 下java jps命令使用解析详解

    jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。 使用 先执行jps –help 查看一下此...

    Java长期运行后, jps等工具无法连接jvm

    绍Java长期运行后, jps等工具无法连接jvm

    java诊断与调优常用命令jmap、jstack、jstat使用实战.pdf

    问题:windows环境下java进程存在,但执行jps无结果 原因:windows权限问题,在 Windows系统中,每个 java 进程启动之后都在 %TMP%/hsperfdata_${user} (${user}为当前登录用户名) 目录下建立一个以该 java 进程 pid...

    jps 在linux系统如何使用案例

    jps 是 Java Process Status Tool 的简称,它的作用是为了列出所有正在运行中的 Java 虚拟机进程 每一个 Java 程序在启动的时候都会为之创建一个 Jvm 实例,通过 jps 可以查看这些进程的相关信息

    JAVA JVM内存监控工具总结

    jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。 jstat:一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。 jmap:打印出...

    大数据运维技术第5章 Hadoop集群运行课件.pptx

    5.3 查看JAVA进程;查看JAVA进程;查看JAVA进程;查看JAVA进程;5.4 查看HDFS的报告;查看HDFS 报告;查看HDFS 报告;5.5 使用浏览器查看节点状态 ;在浏览器的地址栏输入:50070,进入页面可以查看NameNode和DataNode信息,...

    Java进程CPU使用率高排查

     1.jps 获取Java进程的PID。  2.jstack pid >> java.txt 导出CPU占用高进程的线程栈。  3.top -H -p PID 查看对应进程的哪个线程占用CPU过高。  4.echo “obase=16; PID” | bc 将线程的PID转换为16进制。 ...

    Java线程检测和数据收集工具

    通过jps 和jstack定时收集java进程的线程信息

    java-虚拟机 操作系统监控工具-源码

    java监控工具源码-可集成到项目使用 内存状态、CPU负载、磁盘IO吞吐率、磁盘健康状态、网卡IO 监控 适合用于服务健康监控、线...提供多种方式使用:客户端工具跨进程attach启动、添加Java Agent启动、server独立运行启

    java查看sun包源码-monitor:java生产环境内存调优(包括jvm参数类型,JVM的参数类型jinfo&jps(参数和进程查看)j

    jps(参数和进程查看):alien: jstat(类加载、垃圾收集、JIT 编译):alien: jmap+MAT(内存溢出):alien: jstack(线程、死循环、死锁):alien: JVisualVM(本地和远程可视化监控:alien: 使用 BTrace进行拦截调试:alien: ...

    Arthas开源的Java诊断工具-其他

    bug当找不到java进程时,提示不清晰,应该提示用户执行jps命令增加一个 ognl 的在线,可编辑的示例,帮助用户自己调试 ognl表达式当Object输出时,可能会抛出异常,打印 ERROR DATA!!! exception message: null把 ...

    attach-runner:与正在运行的Java进程通信的Java工具

    找到步骤2中创建的进程ID jps 4,在步骤2中创建的com.ali.dbtech.test.DynamicCode中运行代码(1234是进程ID)java -jar target / attach-runner.jar 1234 com.ali.dbtech.test.DynamicCode 5,更改...

    bobxwang#technology-thinking#问题排查工具单1

    jps 是 jdk 提供的一个查看当前 java 进程的小工具,其工作原理是在程序启动后,会在 java.io.tmpdir 指定的目录下生成一个类似于 hsp

    MAT工具(基于Eclipse的内存分析工具)+MAT工具使用说明.docx

    2调用jdk工具jps查看当前的java进程 C:/>jps 3504 Jps 3676 Bootstrap 3496 org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar 3调用jmap工具得到信息 C:/>jmap -dump:format=b,file=heap.bin 3676 ...

    Apriori_java_MR.zip

    (4) 使用hadoop namenode -format命令格式化NameNode,使用start-all.sh命令启动所有Hadoop进程。 (5) 在各节点命令行输入jps检查是否启动成功,若成功,使用wordcount示例进行测试,Hadoop平台搭建完成。 (6)...

    深入理解_Java_虚拟机 JVM_高级特性与最佳实践

    / 76 4.1 概述 / 76 4.2 JDK的命令行工具 / 76 4.2.1 jps:虚拟机进程状况工具 / 79 4.2.2 jstat:虚拟机统计信息监视工具 / 80 4.2.3 jinfo:Java配置信息工具 / 82 4.2.4 jmap:Java内存映像工具 / 82 4.2.5...

    Java虚拟机

    第一部分从宏观的角度介绍了整个Java技术体系、Java和JVM的发展历程、模块化,以及JDK的编译,这对理解本书后面内容有重要帮助。第二部分讲解了JVM的自动内存管理,包括虚拟机内存区域的划分原理以及各种内存溢出...

    zookeeper集群命令

    可以通过JPS指令,这个指令是查看当前活动的java进程。 对于zookeeper来说,如果有Quoroum……,就证明Zk服务是开启的 但该命令只能查看本机机器状态。

    JVM内存问题排查

    最近项目中出现了这样一个问题,有5台虚机上面运行着同样的微服务,每台机器都挂载着8-9个服务,其中一台不知道为什么就挂掉了,不是服务挂了,是机器挂了...3.查看内存对应映射存活情况,这里主要查看对应的java进程有

Global site tag (gtag.js) - Google Analytics