Spaces:
Sleeping
Sleeping
| #!/usr/bin/env python3 | |
| """ | |
| scripts/list_started_processes.py | |
| Utility to list the processes that were started by ``start_all.py``. | |
| It looks for the command‑line strings that ``start_all.py`` uses to launch | |
| the AI backend, Ollama, the FastAPI dashboard and the desktop shortcut. | |
| Run it after ``python start_all.py``: | |
| python scripts/list_started_processes.py | |
| """ | |
| import sys | |
| import os | |
| from pathlib import Path | |
| # psutil gives us a cross‑platform way to inspect running processes. | |
| try: | |
| import psutil | |
| except ImportError: | |
| print("[*] Installing psutil …") | |
| import subprocess | |
| subprocess.check_call([sys.executable, "-m", "pip", "install", "psutil"]) | |
| import psutil | |
| # ---------------------------------------------------------------------- | |
| # Identifiers that match the commands used in start_all.py | |
| # ---------------------------------------------------------------------- | |
| IDENTIFIERS = [ | |
| # AI backend (StabilityMatrix or generic python backend) | |
| "StabilityMatrix", | |
| "START_AI_BACKEND", | |
| # Ollama service | |
| "ollama", | |
| # FastAPI dashboard server | |
| "dashboard_server.py", | |
| # Desktop shortcut (just for completeness – not a process) | |
| "DARKMEDIA-X STUDIO", | |
| ] | |
| def is_match(proc): | |
| """Return True if any identifier appears in the process name or cmdline.""" | |
| try: | |
| name = proc.name().lower() | |
| cmd = " ".join(proc.cmdline()).lower() | |
| for ident in IDENTIFIERS: | |
| ident_lc = ident.lower() | |
| if ident_lc in name or ident_lc in cmd: | |
| return True | |
| except (psutil.NoSuchProcess, psutil.AccessDenied): | |
| return False | |
| return False | |
| def main(): | |
| print("\n=== Processes started by start_all.py ===\n") | |
| matches = [p for p in psutil.process_iter(['pid', 'name', 'cmdline']) if is_match(p)] | |
| if not matches: | |
| print("⚠️ No matching processes were found. Did you run start_all.py?") | |
| return | |
| for proc in matches: | |
| try: | |
| pid = proc.pid | |
| name = proc.name() | |
| cmd = " ".join(proc.cmdline()) | |
| print(f"[{pid}] {name}") | |
| print(f" cmd: {cmd}") | |
| except (psutil.NoSuchProcess, psutil.AccessDenied): | |
| continue | |
| print("\n=== End of list ===\n") | |
| if __name__ == "__main__": | |
| main() |