|
@@ -17,132 +17,13 @@ fi
|
|
# 初始设置环境变量
|
|
# 初始设置环境变量
|
|
export LD_LIBRARY_PATH="./PlatformModule:$LD_LIBRARY_PATH"
|
|
export LD_LIBRARY_PATH="./PlatformModule:$LD_LIBRARY_PATH"
|
|
|
|
|
|
-# 检查PlatformModule目录
|
|
|
|
-if [ ! -d "./PlatformModule" ]; then
|
|
|
|
- echo "警告:未找到PlatformModule目录"
|
|
|
|
-fi
|
|
|
|
-
|
|
|
|
-DRIVER_CONFIG_DIR="./DriverConfig"
|
|
|
|
-
|
|
|
|
-# 检查DriverConfig目录
|
|
|
|
-if [ ! -d "$DRIVER_CONFIG_DIR" ]; then
|
|
|
|
- echo "错误:DriverConfig目录不存在"
|
|
|
|
- exit 1
|
|
|
|
-fi
|
|
|
|
-
|
|
|
|
-# 检查可执行文件
|
|
|
|
-if [ ! -x "./CcosProcGo" ]; then
|
|
|
|
- echo "错误:未找到可执行文件CcosProcGo"
|
|
|
|
- exit 1
|
|
|
|
-fi
|
|
|
|
-
|
|
|
|
-# 统计文件数量
|
|
|
|
-FILE_COUNT=$(find "$DRIVER_CONFIG_DIR" -maxdepth 1 -type f | wc -l)
|
|
|
|
-if [ "$FILE_COUNT" -eq 0 ]; then
|
|
|
|
- echo "警告:DriverConfig目录中没有文件"
|
|
|
|
- exit 0
|
|
|
|
-fi
|
|
|
|
-
|
|
|
|
-# 提取所有配置文件中的oemdriver路径并添加到LD_LIBRARY_PATH(精准匹配)
|
|
|
|
-echo "正在解析配置文件中的OEM驱动路径..."
|
|
|
|
-declare -A OEM_DIRS # 使用关联数组去重
|
|
|
|
-
|
|
|
|
-# 遍历所有配置文件
|
|
|
|
-while IFS= read -r -d '' FILE_PATH; do
|
|
|
|
- # 精准提取<oemdriver>和</oemdriver>之间的内容(忽略中间的换行和空格)
|
|
|
|
- # 使用更严格的正则,只捕获标签内的路径内容
|
|
|
|
- OEM_DRIVER=$(sed -n 's/.*<oemdriver>\s*\(.*\)\s*<\/oemdriver>.*/\1/p' "$FILE_PATH")
|
|
|
|
-
|
|
|
|
- if [ -n "$OEM_DRIVER" ]; then
|
|
|
|
- # 替换%ROOT%为当前目录
|
|
|
|
- OEM_PATH=$(echo "$OEM_DRIVER" | sed "s|%ROOT%|.|g")
|
|
|
|
- # 提取目录路径(排除文件名)
|
|
|
|
- OEM_DIR=$(dirname "$OEM_PATH")
|
|
|
|
-
|
|
|
|
- if [ -d "$OEM_DIR" ]; then
|
|
|
|
- OEM_DIRS["$OEM_DIR"]=1 # 去重存储
|
|
|
|
- echo "发现有效的OEM驱动目录: $OEM_DIR"
|
|
|
|
- else
|
|
|
|
- echo "警告:OEM驱动目录 $OEM_DIR 不存在"
|
|
|
|
- fi
|
|
|
|
- fi
|
|
|
|
-done < <(find "$DRIVER_CONFIG_DIR" -maxdepth 1 -type f -print0)
|
|
|
|
-
|
|
|
|
-# 将所有OEM驱动目录添加到LD_LIBRARY_PATH
|
|
|
|
-if [ ${#OEM_DIRS[@]} -gt 0 ]; then
|
|
|
|
- for dir in "${!OEM_DIRS[@]}"; do
|
|
|
|
- export LD_LIBRARY_PATH="$dir:$LD_LIBRARY_PATH"
|
|
|
|
- done
|
|
|
|
- echo "已更新LD_LIBRARY_PATH: $LD_LIBRARY_PATH"
|
|
|
|
-else
|
|
|
|
- echo "未发现有效的OEM驱动目录"
|
|
|
|
-fi
|
|
|
|
-
|
|
|
|
-# 获取当前日期,格式为YYYYMMDD
|
|
|
|
-CURRENT_DATE=$(date +%Y%m%d)
|
|
|
|
-
|
|
|
|
-echo "发现 $FILE_COUNT 个文件,开始启动后台进程..."
|
|
|
|
-
|
|
|
|
-# 存储后台进程ID,方便后续管理
|
|
|
|
-PIDS=()
|
|
|
|
-PID_FILE="ccosprocgo_pids_${CURRENT_DATE}.txt"
|
|
|
|
-> "$PID_FILE" # 清空或创建PID记录文件
|
|
|
|
-
|
|
|
|
-# 启动所有进程
|
|
|
|
-while IFS= read -r -d '' FILE_PATH; do
|
|
|
|
- FILE_NAME=$(basename "$FILE_PATH")
|
|
|
|
-
|
|
|
|
- echo "正在启动后台进程:./CcosProcGo $FILE_NAME"
|
|
|
|
- # 启动后台进程
|
|
|
|
- ./CcosProcGo "$FILE_NAME" > "${FILE_NAME}_${CURRENT_DATE}.log" 2>&1 &
|
|
|
|
- # 记录进程ID
|
|
|
|
- PID=$!
|
|
|
|
- PIDS+=("$PID")
|
|
|
|
- echo "$PID: $FILE_NAME" >> "$PID_FILE"
|
|
|
|
-
|
|
|
|
-done < <(find "$DRIVER_CONFIG_DIR" -maxdepth 1 -type f -print0)
|
|
|
|
-
|
|
|
|
-echo "所有进程已启动"
|
|
|
|
-echo "进程ID列表:${PIDS[*]}"
|
|
|
|
-echo "进程ID已保存到文件:$PID_FILE"
|
|
|
|
-echo "可以使用以下命令查看进程:ps -p ${PIDS[*]}"
|
|
|
|
-echo "可以使用以下命令终止所有进程:kill ${PIDS[*]}"
|
|
|
|
-echo "也可以使用kill脚本:$KILL_SCRIPT"
|
|
|
|
-
|
|
|
|
-exit 0
|
|
|
|
-#!/bin/bash
|
|
|
|
-
|
|
|
|
-# 定义kill脚本路径
|
|
|
|
-KILL_SCRIPT="./kill_ccosprocgo.sh"
|
|
|
|
-
|
|
|
|
-# 检查并执行kill脚本清理残留进程
|
|
|
|
-if [ -f "$KILL_SCRIPT" ] && [ -x "$KILL_SCRIPT" ]; then
|
|
|
|
- echo "正在执行进程清理脚本,确保没有残留的CcosProcGo进程..."
|
|
|
|
- "$KILL_SCRIPT"
|
|
|
|
- echo "进程清理完成"
|
|
|
|
-else
|
|
|
|
- echo "错误:未找到kill脚本 $KILL_SCRIPT 或脚本不可执行"
|
|
|
|
- echo "请确保kill脚本存在且具有执行权限 (chmod +x $KILL_SCRIPT)"
|
|
|
|
- exit 1
|
|
|
|
-fi
|
|
|
|
-
|
|
|
|
-# 初始设置环境变量
|
|
|
|
-export LD_LIBRARY_PATH="./PlatformModule:$LD_LIBRARY_PATH"
|
|
|
|
-
|
|
|
|
-# 检查PlatformModule目录
|
|
|
|
-if [ ! -d "./PlatformModule" ]; then
|
|
|
|
- echo "警告:未找到PlatformModule目录"
|
|
|
|
-fi
|
|
|
|
-
|
|
|
|
|
|
+# 检查目录和文件
|
|
DRIVER_CONFIG_DIR="./DriverConfig"
|
|
DRIVER_CONFIG_DIR="./DriverConfig"
|
|
-
|
|
|
|
-# 检查DriverConfig目录
|
|
|
|
if [ ! -d "$DRIVER_CONFIG_DIR" ]; then
|
|
if [ ! -d "$DRIVER_CONFIG_DIR" ]; then
|
|
echo "错误:DriverConfig目录不存在"
|
|
echo "错误:DriverConfig目录不存在"
|
|
exit 1
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
|
|
-# 检查可执行文件
|
|
|
|
if [ ! -x "./CcosProcGo" ]; then
|
|
if [ ! -x "./CcosProcGo" ]; then
|
|
echo "错误:未找到可执行文件CcosProcGo"
|
|
echo "错误:未找到可执行文件CcosProcGo"
|
|
exit 1
|
|
exit 1
|
|
@@ -155,70 +36,17 @@ if [ "$FILE_COUNT" -eq 0 ]; then
|
|
exit 0
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
|
|
-# 提取所有配置文件中的oemdriver路径并添加到LD_LIBRARY_PATH(精准匹配)
|
|
|
|
-echo "正在解析配置文件中的OEM驱动路径..."
|
|
|
|
-declare -A OEM_DIRS # 使用关联数组去重
|
|
|
|
-
|
|
|
|
-# 遍历所有配置文件
|
|
|
|
-while IFS= read -r -d '' FILE_PATH; do
|
|
|
|
- # 精准提取<oemdriver>和</oemdriver>之间的内容(忽略中间的换行和空格)
|
|
|
|
- # 使用更严格的正则,只捕获标签内的路径内容
|
|
|
|
- OEM_DRIVER=$(sed -n 's/.*<oemdriver>\s*\(.*\)\s*<\/oemdriver>.*/\1/p' "$FILE_PATH")
|
|
|
|
-
|
|
|
|
- if [ -n "$OEM_DRIVER" ]; then
|
|
|
|
- # 替换%ROOT%为当前目录
|
|
|
|
- OEM_PATH=$(echo "$OEM_DRIVER" | sed "s|%ROOT%|.|g")
|
|
|
|
- # 提取目录路径(排除文件名)
|
|
|
|
- OEM_DIR=$(dirname "$OEM_PATH")
|
|
|
|
-
|
|
|
|
- if [ -d "$OEM_DIR" ]; then
|
|
|
|
- OEM_DIRS["$OEM_DIR"]=1 # 去重存储
|
|
|
|
- echo "发现有效的OEM驱动目录: $OEM_DIR"
|
|
|
|
- else
|
|
|
|
- echo "警告:OEM驱动目录 $OEM_DIR 不存在"
|
|
|
|
- fi
|
|
|
|
- fi
|
|
|
|
-done < <(find "$DRIVER_CONFIG_DIR" -maxdepth 1 -type f -print0)
|
|
|
|
-
|
|
|
|
-# 将所有OEM驱动目录添加到LD_LIBRARY_PATH
|
|
|
|
-if [ ${#OEM_DIRS[@]} -gt 0 ]; then
|
|
|
|
- for dir in "${!OEM_DIRS[@]}"; do
|
|
|
|
- export LD_LIBRARY_PATH="$dir:$LD_LIBRARY_PATH"
|
|
|
|
- done
|
|
|
|
- echo "已更新LD_LIBRARY_PATH: $LD_LIBRARY_PATH"
|
|
|
|
-else
|
|
|
|
- echo "未发现有效的OEM驱动目录"
|
|
|
|
-fi
|
|
|
|
-
|
|
|
|
-# 获取当前日期,格式为YYYYMMDD
|
|
|
|
-CURRENT_DATE=$(date +%Y%m%d)
|
|
|
|
|
|
|
|
echo "发现 $FILE_COUNT 个文件,开始启动后台进程..."
|
|
echo "发现 $FILE_COUNT 个文件,开始启动后台进程..."
|
|
|
|
|
|
-# 存储后台进程ID,方便后续管理
|
|
|
|
-PIDS=()
|
|
|
|
-PID_FILE="ccosprocgo_pids_${CURRENT_DATE}.txt"
|
|
|
|
-> "$PID_FILE" # 清空或创建PID记录文件
|
|
|
|
-
|
|
|
|
# 启动所有进程
|
|
# 启动所有进程
|
|
while IFS= read -r -d '' FILE_PATH; do
|
|
while IFS= read -r -d '' FILE_PATH; do
|
|
FILE_NAME=$(basename "$FILE_PATH")
|
|
FILE_NAME=$(basename "$FILE_PATH")
|
|
-
|
|
|
|
echo "正在启动后台进程:./CcosProcGo $FILE_NAME"
|
|
echo "正在启动后台进程:./CcosProcGo $FILE_NAME"
|
|
- # 启动后台进程
|
|
|
|
- ./CcosProcGo "$FILE_NAME" > "${FILE_NAME}_${CURRENT_DATE}.log" 2>&1 &
|
|
|
|
- # 记录进程ID
|
|
|
|
- PID=$!
|
|
|
|
- PIDS+=("$PID")
|
|
|
|
- echo "$PID: $FILE_NAME" >> "$PID_FILE"
|
|
|
|
-
|
|
|
|
|
|
+ ./CcosProcGo "$FILE_NAME" > /dev/null 2>&1 &
|
|
done < <(find "$DRIVER_CONFIG_DIR" -maxdepth 1 -type f -print0)
|
|
done < <(find "$DRIVER_CONFIG_DIR" -maxdepth 1 -type f -print0)
|
|
|
|
|
|
echo "所有进程已启动"
|
|
echo "所有进程已启动"
|
|
-echo "进程ID列表:${PIDS[*]}"
|
|
|
|
-echo "进程ID已保存到文件:$PID_FILE"
|
|
|
|
-echo "可以使用以下命令查看进程:ps -p ${PIDS[*]}"
|
|
|
|
-echo "可以使用以下命令终止所有进程:kill ${PIDS[*]}"
|
|
|
|
-echo "也可以使用kill脚本:$KILL_SCRIPT"
|
|
|
|
|
|
+echo "可以使用kill脚本终止进程:$KILL_SCRIPT"
|
|
|
|
|
|
-exit 0
|
|
|
|
|
|
+exit 0
|