Java jps 无法显示进程 id

Java jps About 480 words

现象

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位置。

Views: 684 · Posted: 2023-06-27

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

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

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


Today On History
Browsing Refresh