diff --git a/tum_esm_utils/processes.py b/tum_esm_utils/processes.py index f2ac56e..76bbf77 100644 --- a/tum_esm_utils/processes.py +++ b/tum_esm_utils/processes.py @@ -50,7 +50,18 @@ def terminate_process(script_path: str) -> list[int]: """Terminate all processes that have the given script as their entrypoint. Returns the list of terminated PIDs.""" - termination_pids = get_process_pids(script_path) - for pid in termination_pids: - os.system(f"kill {pid}") + termination_pids: list[int] = [] + for p in psutil.process_iter(): + try: + if p.cmdline()[1] == script_path: + termination_pids.append(p.pid) + p.kill() + except ( + psutil.AccessDenied, + psutil.ZombieProcess, + psutil.NoSuchProcess, + IndexError, + ): + pass + return termination_pids