tomcat以服务方式启动后,jps、jstat等命令失效问题排查

tomcat以服务方式启动后,jps、jstat等命令失效问题排查

环境

组件版本
JDK1.8
Tomcat9.0.64
操作系统window 11

问题现象

Tomcat注册成服务后,通过jps命令查找不到进程,但是在windows资源管理器中可以看到进程,同时使用jstat命令提示not fount,但是jstack命令正常,如下图:

  1. Tomcat启动
    在这里插入图片描述

  2. 系统访问正常
    在这里插入图片描述

  3. Windows资源管理器中可以看到进程信息
    在这里插入图片描述

  4. 通过jsp命令找不到进程
    在这里插入图片描述

  5. jstat -gcutil 9912命令提示not fount
    在这里插入图片描述

  6. jstack 9912命令正常
    在这里插入图片描述

问题分析

  1. 从上的一系列截图中可以确认,服务确实已经启动。
  2. jstack命令可以正常使用,但是jps命令不正常,说明这两个命令的原理不一样
  3. 了解一下jps命令的原理

jps工作原理

jps的工作原理其实也不复杂,jvm启动后,会在C:\Users\用户\AppData\Local\Temp\hsperfdata_用户下成pid文件,jps读的就这这个目录下的文件。
在这里插入图片描述
现在这个目录是空的,所以jps查询后,也查不到信息。当我启动idea(idea是java服务)后,这个目录下会生成ideapid文件。就像这样:
在这里插入图片描述
然后通过jps -v,就可以查到idea的进程了
在这里插入图片描述

问题解决

给【hsperfdata_用户名】文件夹受权即可
在这里插入图片描述
在这里插入图片描述

权限设置好后,再启动Tomcat服务,就可以在hsperfdata_下看到pid文件了
在这里插入图片描述
然后jps命令也正常了
在这里插入图片描述
jstat -gcutil 9296也正常了
在这里插入图片描述

注意事项

  1. 只要jps命令出现问题,需要第一时间排查目录C:\Users\用户\AppData\Local\Temp\hsperfdata_用户
  2. 安装服务时,一定要指定用户名,同时,用户名一定得是当前登录用户的用户名,如:service install tomcat9 --user xxx
  3. 服务启动时,不要去服务管理里直接启动,在命令行里用start tomcat9启动
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值