check_and_start_ccosprocgo.sh 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #!/bin/bash
  2. # 初始设置环境变量
  3. export LD_LIBRARY_PATH="./PlatformModule:$LD_LIBRARY_PATH"
  4. # 检查目录和文件
  5. DRIVER_CONFIG_DIR="./DriverConfig"
  6. if [ ! -d "$DRIVER_CONFIG_DIR" ]; then
  7. echo "错误:DriverConfig目录不存在"
  8. exit 1
  9. fi
  10. if [ ! -x "./CcosProcGo" ]; then
  11. echo "错误:未找到可执行文件CcosProcGo"
  12. exit 1
  13. fi
  14. # 统计文件数量
  15. FILE_COUNT=$(find "$DRIVER_CONFIG_DIR" -maxdepth 1 -type f | wc -l)
  16. if [ "$FILE_COUNT" -eq 0 ]; then
  17. echo "警告:DriverConfig目录中没有文件"
  18. exit 0
  19. fi
  20. echo "发现 $FILE_COUNT 个配置文件,开始检测进程状态..."
  21. # 计数器
  22. STARTED_COUNT=0
  23. ALREADY_RUNNING_COUNT=0
  24. # 遍历所有配置文件
  25. while IFS= read -r -d '' FILE_PATH; do
  26. FILE_NAME=$(basename "$FILE_PATH")
  27. # 检查是否已经有对应的进程在运行
  28. # 使用 pgrep 查找进程名包含 CcosProcGo 和配置文件名的进程
  29. if pgrep -f "CcosProcGo $FILE_NAME" > /dev/null 2>&1; then
  30. echo "✓ 进程已运行:$FILE_NAME"
  31. ((ALREADY_RUNNING_COUNT++))
  32. else
  33. echo "✗ 进程未运行,正在启动:$FILE_NAME"
  34. ./CcosProcGo "$FILE_NAME" > /dev/null 2>&1 &
  35. ((STARTED_COUNT++))
  36. fi
  37. done < <(find "$DRIVER_CONFIG_DIR" -maxdepth 1 -type f -print0)
  38. echo ""
  39. echo "========== 执行结果 =========="
  40. echo "已运行的进程数:$ALREADY_RUNNING_COUNT"
  41. echo "新启动的进程数:$STARTED_COUNT"
  42. echo "总配置文件数:$FILE_COUNT"
  43. echo "=============================="
  44. exit 0