获取占用端口的进程详细信息
(self, port: int)
| 446 | return True |
| 447 | |
| 448 | def get_process_using_port(self, port: int) -> str: |
| 449 | """获取占用端口的进程详细信息""" |
| 450 | try: |
| 451 | for conn in psutil.net_connections(kind="inet"): |
| 452 | if cast(_AddrWithPort, conn.laddr).port == port: |
| 453 | try: |
| 454 | process = psutil.Process(conn.pid) |
| 455 | # 获取详细信息 |
| 456 | proc_info = [ |
| 457 | f"进程名: {process.name()}", |
| 458 | f"PID: {process.pid}", |
| 459 | f"执行路径: {process.exe()}", |
| 460 | f"工作目录: {process.cwd()}", |
| 461 | f"启动命令: {' '.join(process.cmdline())}", |
| 462 | ] |
| 463 | return "\n ".join(proc_info) |
| 464 | except (psutil.NoSuchProcess, psutil.AccessDenied) as e: |
| 465 | return f"无法获取进程详细信息(可能需要管理员权限): {e!s}" |
| 466 | return "未找到占用进程" |
| 467 | except Exception as e: |
| 468 | return f"获取进程信息失败: {e!s}" |
| 469 | |
| 470 | def _init_jwt_secret(self) -> None: |
| 471 | if not self.config.get("dashboard", {}).get("jwt_secret", None): |