import subprocess import psutil from library.custom_logging import setup_logging # Set up logging log = setup_logging() class CommandExecutor: def __init__(self): self.process = None def execute_command(self, run_cmd): if self.process and self.process.poll() is None: log.info("The command is already running. Please wait for it to finish.") else: self.process = subprocess.Popen(run_cmd, shell=True) def kill_command(self): if self.process and self.process.poll() is None: try: parent = psutil.Process(self.process.pid) for child in parent.children(recursive=True): child.kill() parent.kill() log.info("The running process has been terminated.") except psutil.NoSuchProcess: log.info("The process does not exist.") except Exception as e: log.info(f"Error when terminating process: {e}") else: log.info("There is no running process to kill.")