为什么java进程已启动,但jps却显示不了该进程进程号?
- 现象
用ps -ef能看到启动的java进程,但是用jps查看却不存在该进程的id。
导致jconsole、jvisualvm无法监控该进程,其他java自带工具也无法使用。
- 原因
java程序启动后,默认在/tmp/hsperfdata_{uname}目录下创建以pid为文件名的新文件,存储jvm运行的相关信息。jps、jconsole、jvisualvm等工具的数据源就是文件/tmp/hsperfdata_{uname}/pid。所以当该文件不存在或是无法读取时就会出现jps无法查看进程号,jconsole无法监控等问题。
- 权限原因:没有读写权限
没有写/tmp目录权限 or 磁盘已满,无法创建文件。
没有读文件权限。
- 数据原因:文件被清理
文件被清理。(Linux大多存在定时任务对/tmp进行清理,eg:crontab)
- 路径原因:路径被更改
启动使用-Djava.io.tmpdir更改了临时目录,但是jps、jconsole等只会从/tmp读取。
posted @
2022-03-28 12:37
chengjunjie
阅读(
47)
评论()
收藏
举报