Java OpenResty Spring Spring Boot MySQL Redis MongoDB PostgreSQL Linux Android Nginx 面试 小程序 Arthas JVM AQS juc Kubernetes Docker 诊断工具


Java jps 无法显示进程 id

Java jps 大约 480 字

现象

Linux上使用jps查看进程id,无法显示运行的Java进程。

命令原理

jpsjstackjcmd等命令默认查看的是/tmp/hsperfdata_{username}文件夹下的以进程id命名的文件。

如:以root用户启动的Java服务,运行的进程id1,生成的文件是:/tmp/hsperfdata_root/1

问题原因

jps不显示进程id可能原因如下:

  • /tmp目录的读写权限问题。
  • /tmp被删除,或不存在/tmp/hsperfdata_{username}/{pid}文件。
  • /tmp目录超过10天或更长时间未读写,Linux会自动删除该目录。

备注

/tmp/hsperfdata_{username}/{pid}文件会在对应Java进程退出后被清除。

如果Java进程非正常退出(如kill -9),那么pid文件会被保留,直到执行一次Java命令或是加载了JVM程序的命令(如jpsjavacjstat),会将所有无用的pid文件都清除掉。

使用-Djava.io.tmpdir启动参数可以更改默认/tmp位置。

阅读 461 · 发布于 2023-06-27

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb

扫描下方二维码关注公众号和小程序↓↓↓

扫描二维码关注我
昵称:
随便看看 换一批