(self, project_data: dict)
| 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() |
no test coverage detected