diff --git a/btl_ctl.sh b/btl_ctl.sh index a45bd6f..f3c5ead 100644 --- a/btl_ctl.sh +++ b/btl_ctl.sh @@ -10,6 +10,11 @@ run() { python main.py } +axis() { + cd ~/Workplace/toolkits + ./axis_assist +} + command_array=("start" "run") if [ $# -lt 1 ]; then @@ -23,9 +28,12 @@ else start # 这里添加了调用start函数的代码 elif [[ $1 == "run" || $1 == "-run" || $1 == "RUN" ]]; then run # 假设你希望在这里调用run函数 + elif [[ $1 == "axis" || $1 == "-axis" || $1 == "AXIS" ]]; then + axis # elif [[ $1 == "help" || $1 == "-help" || $1 == "HELP" ]]; then echo "start: 启动服务端脚本" echo "run: 启动任务主程序脚本" + echo "axis: 執行機構調試腳本" else echo "无效的指令:$1" fi diff --git a/start.py b/start.py index 984e796..9fc78d1 100644 --- a/start.py +++ b/start.py @@ -9,21 +9,28 @@ from loguru import logger binary_command = "cd /home/evan/Workplace/project_capture/build/; ./capture" # 替换为你的二进制程序路径 conda_envs = [ {"env": "conda_venv", "path": "/home/evan/Workplace/project_infer/lane_server/", "script": "python lane_infer_server.py"}, - {"env": "conda_venv", "path": "/home/evan/Workplace/project_infer/yolo_server/", "script": "python yolo_infer_server.py"}, + {"env": "conda_venv", "path": "/home/evan/Workplace/project_infer/yolo_server/", "script": "python yolo_infer_server.py"}, + {"env": "conda_venv", "path": "/home/evan/Workplace/project_infer/ocr_server/", "script": "python ocr_infer_server.py"}, ] def kill_processes_by_name(process_name): """ 终止所有具有指定名称的进程。 """ - for proc in psutil.process_iter(['pid', 'name', 'cmdline']): - try: - # 检查进程名是否包含给定的字符串 - if process_name.lower() in proc.info['name'].lower() or process_name.lower() in ' '.join(proc.info['cmdline']).lower(): - logger.warning(f"Killing {proc.info['name']} (PID: {proc.info['pid']})") - proc.kill() - except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess): - pass + for proc in psutil.process_iter(['pid', 'name', 'cmdline']): + try: + # 检查 cmdline 是否存在且是可迭代的 + if 'cmdline' in proc.info and isinstance(proc.info['cmdline'], (list, tuple)): + cmdline = ' '.join(proc.info['cmdline']).lower() + # 检查进程名或命令行是否包含给定的字符串 + if process_name.lower() in proc.info['name'].lower() or process_name.lower() in cmdline: + logger.warning(f"Killing {proc.info['name']} (PID: {proc.info['pid']})") + proc.kill() + else: + # 如果 cmdline 不存在或不是可迭代的,可以跳过或记录日志 + logger.debug(f"cmdline is not iterable or does not exist for process {proc.info['name']} (PID: {proc.info['pid']})") + except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess): + pass # 启动函数,用于启动并监控一个进程 def start_and_monitor_process(cmd, env=None):