@name jstack 生成虚拟线程快照 @param pid 进程id @return string
(self, get)
| 4543 | return cmd |
| 4544 | |
| 4545 | def jstack_project(self, get): |
| 4546 | ''' |
| 4547 | @name jstack 生成虚拟线程快照 |
| 4548 | @param pid 进程id |
| 4549 | @return string |
| 4550 | ''' |
| 4551 | project_find = self.get_project_find(get.project_name) |
| 4552 | if not project_find: |
| 4553 | return public.returnMsg(False, '指定项目不存在2: {}'.format(get.project_name)) |
| 4554 | # 获取jmap jhat jstack绝对路径 |
| 4555 | if not project_find['project_config']['java_type'] == 'springboot': return public.returnMsg( |
| 4556 | False, '只支持Springboot项目' |
| 4557 | ) |
| 4558 | path = self.get_jmap_path(project_find) |
| 4559 | # 获取运行状态 |
| 4560 | if not self.get_project_run_state(project_name = get.project_name): |
| 4561 | return public.returnMsg(False, '指定项目未启动: {}'.format(get.project_name)) |
| 4562 | # 获取pid |
| 4563 | pidlist = self.get_project_load_info(project_name = get.project_name) |
| 4564 | if not pidlist: |
| 4565 | return public.returnMsg(False, '指定项目未启动: {}'.format(get.project_name)) |
| 4566 | pid = 0 |
| 4567 | for i in pidlist: |
| 4568 | pid = i |
| 4569 | break |
| 4570 | if pid == 0: |
| 4571 | return public.returnMsg(False, '指定项目未启动: {}'.format(get.project_name)) |
| 4572 | if 'jstack' in path: |
| 4573 | jstack_path = path['jstack'] |
| 4574 | cmd = '{} -l {}'.format(jstack_path, pid) |
| 4575 | # ret=public.ExecShell(cmd,user=project_find['project_config']['run_user']) |
| 4576 | ret = public.ExecShell(cmd, user = project_find['project_config']['run_user']) |
| 4577 | return public.returnMsg(True, ret) |
| 4578 | return public.returnMsg(False, '当前JDK不存在jstack') |
| 4579 | |
| 4580 | # ———————————— |
| 4581 | # 批量操作 | |
nothing calls this directly
no test coverage detected