MCPcopy Create free account
hub / github.com/aaPanel/BaoTa / jstack_project

Method jstack_project

class/projectModel/javaModel.py:4545–4578  ·  view source on GitHub ↗

@name jstack 生成虚拟线程快照 @param pid 进程id @return string

(self, get)

Source from the content-addressed store, hash-verified

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 # 批量操作 |

Callers

nothing calls this directly

Calls 7

get_project_findMethod · 0.95
get_jmap_pathMethod · 0.95
get_project_run_stateMethod · 0.95
get_project_load_infoMethod · 0.95
returnMsgMethod · 0.80
ExecShellMethod · 0.80
formatMethod · 0.45

Tested by

no test coverage detected