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

Method _get_pid_by_command

mod/project/java/projectMod.py:1753–1806  ·  view source on GitHub ↗
(self, project_data: dict)

Source from the content-addressed store, hash-verified

1751 return None
1752
1753 def _get_pid_by_command(self, project_data: dict) -> Optional[int]:
1754 project_config = project_data["project_config"]
1755 if project_config["java_type"] != "springboot":
1756 return None
1757
1758 server_name = self._get_systemd_server_name(project_config)
1759 server_admin = RealServer()
1760 pid = server_admin.get_daemon_pid(server_name)["data"]
1761 if isinstance(pid, int):
1762 try:
1763 p = psutil.Process(pid)
1764 if p.is_running():
1765 public.writeFile(project_data["project_config"]['pids'], str(pid))
1766 return pid
1767 except:
1768 pass
1769
1770 jdk_path = utils.normalize_jdk_path(project_config['project_jdk'])
1771 project_jar = project_config['project_jar']
1772 jar_name = os.path.basename(project_jar)
1773 jar_cmd = project_config['project_cmd']
1774 port_rep = re.search(r"--server\.port=\d+", jar_cmd)
1775 pids = []
1776 for pro in psutil.process_iter(['pid', 'exe', 'cmdline']):
1777 if pro.status() == "zombie":
1778 continue
1779 try:
1780 if port_rep and port_rep.group() not in pro.cmdline():
1781 continue
1782 if jdk_path == utils.normalize_jdk_path(pro.exe()) and any((jar_name in i for i in pro.cmdline())):
1783 pids.append(pro.pid)
1784 except:
1785 pass
1786
1787 if not pids:
1788 return None
1789
1790 running_pid = []
1791 for pid in pids:
1792 if pid in psutil.pids():
1793 running_pid.append(pid)
1794
1795 if len(running_pid) == 1:
1796 public.writeFile(project_data["project_config"]['pids'], str(running_pid[0]))
1797 public.set_mode(project_data["project_config"]['pids'], "666")
1798 return running_pid[0]
1799 for pid in running_pid:
1800 p = psutil.Process(pid)
1801 if p.ppid() not in running_pid:
1802 public.writeFile(project_data["project_config"]['pids'], str(pid))
1803 public.set_mode(project_data["project_config"]['pids'], "666")
1804 return pid
1805
1806 return None
1807
1808 def all_spring_project_pid(self):
1809 projects = public.M('sites').where('project_type=?', ("Java",)).select()

Callers 1

get_project_pidMethod · 0.95

Calls 11

get_daemon_pidMethod · 0.95
RealServerClass · 0.90
writeFileMethod · 0.80
basenameMethod · 0.80
set_modeMethod · 0.80
is_runningMethod · 0.45
searchMethod · 0.45
statusMethod · 0.45
groupMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected