jps命令看不到相关java进程
现象
最近磁盘进展,把临时目录/tmp给全删了,结果发现jps的输出为空,找不到正在运行的jvm进程。
但是新建的进程没有问题,能够正常查看:
[root@node-master ~]# ps -e|grep java
32840 ? 00:09:14 java
34877 ? 00:12:51 java
35385 ? 00:07:10 java
35758 ? 00:52:09 java
93574 ? 01:08:14 java
109187 pts/0 00:18:33 java
114016 ? 00:00:42 java
[root@node-master ~]# jps # 看不到想要的java进程
114016 LivyServer
81220 Jps
114016是新建的,使用ps查看还有很多其他java进程,但是无法显示。
原因
jps命令会使用 /tmp/hsperfdata_{用户名}目录 (如果是window, 则目录为 %temp%\hsperfdata_{用户名}) 显示java进程的详细信息,由于我删除了老的tmp目录,所以已经创建的java 进程就没有这些信息,所以就没法展示了。
解决办法
1. 把/tmp/hsperfdata_{用户名} 对应的目录删掉即可,再次执行jps。
2. 如果还不行, 检查是否有该目录权限, 如果这个文件夹的所有者和文件所属组权限与运行java程序的用户权限不一致,这样启动时用户就没有权限写这个文件夹. ( linux终端下 sudo chmod 755 hsperfdata_{用户名})