- 移除交叉编译脚本 build-arm64.sh / build-arm64-image.sh 及本地 bin/arm64、build-arm64 产物目录(QEMU 模拟编译过慢)。 板卡产物统一由 ./scripts/build-board.sh 原生编译产出。 - deploy.sh 简化为 mission + 5 个 systemd 服务安装(不再推送 二进制),头注明确二进制来源为 build-board.sh。 - fetch-data.sh:新增 pCanBridge_data.db(+wal/shm) 下载,补齐 遗漏的 pccu_data.db-wal/-shm,--journal 导出列表加入 pCanBridge。 - clean-data.sh:同步清理 pCanBridge 数据库三件套;修复停服命令 漏掉 pCCU 的老问题(边写边清会产生脏数据),现按 pCanBridge→apps→moosdb 顺序全停;--start 启动列表补齐。 - .gitignore:新增全局规则 *.db / *.db-shm / *.db-wal / *.db-journal / *.log,所有数据库与日志一律不入库;清理散落 的重复条目与失效的 bin/arm64 条目。 验证:各脚本 bash -n 通过,help 输出正常,git check-ignore 命中 新规则且不影响 .moos 等配置文件。
148 lines
5.9 KiB
Bash
Executable File
148 lines
5.9 KiB
Bash
Executable File
#!/bin/bash
|
||
#=======================================================================
|
||
# FILE: scripts/clean-data.sh
|
||
# DESC: 清理目标板卡 (RK3588 / Ubuntu 22.04) 上的数据库与日志文件。
|
||
# 默认清理板卡运行目录 /root/work/h100/data/ 下的:
|
||
# power_data.db (+ -wal/-shm) 主机功率数据库
|
||
# feedback_data.db 反馈落盘数据库
|
||
# pccu_data.db (+ -wal/-shm) pCCU 帧日志数据库
|
||
# pCanBridge_data.db (+ -wal/-shm) pCanBridge CAN 帧数据库
|
||
# pPowerManger.log / pCCU.log 运行日志
|
||
# 默认先停止各服务再清理(避免 SQLite WAL 仍在写入)。
|
||
#
|
||
# 用法:
|
||
# ./scripts/clean-data.sh # 停服务 -> 清理 data 目录(不重启)
|
||
# ./scripts/clean-data.sh --start # 清理后重新启动各服务
|
||
# ./scripts/clean-data.sh --no-stop # 不停服务直接清理(慎用)
|
||
# ./scripts/clean-data.sh --stale # 额外清理 bin/ 与 src/bin/ 下的旧 db/log
|
||
#
|
||
# 参数:
|
||
# --host <ip> 目标主机(默认 192.168.0.223)
|
||
# --user <user> 登录用户(默认 root)
|
||
# --board-dir <dir> 板卡部署根目录(默认 /root/work/h100)
|
||
# --start 清理后重启服务
|
||
# --no-stop 不停服务直接清理(慎用)
|
||
# --stale 额外清理历史遗留的 bin/、src/bin/ 下旧数据库与日志
|
||
# -h, --help 显示帮助
|
||
#
|
||
# 前置: 板卡已配免密 SSH(见 scripts/deploy.sh setup-ssh)。
|
||
#=======================================================================
|
||
|
||
set -uo pipefail
|
||
|
||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
PROJECT_ROOT="$(dirname "${SCRIPT_DIR}")"
|
||
|
||
HOST="192.168.0.223"
|
||
USER="root"
|
||
BOARD_DIR="/root/work/h100"
|
||
DO_START=0
|
||
DO_STOP=1
|
||
DO_STALE=0
|
||
|
||
SERVICES=(moosdb pPowerManger pPowerMangerHost pCCU pCanBridge)
|
||
|
||
# 板卡 data 目录下需要清理的文件(含 SQLite WAL/SHM)
|
||
DATA_FILES=(
|
||
power_data.db power_data.db-wal power_data.db-shm
|
||
feedback_data.db
|
||
pccu_data.db pccu_data.db-wal pccu_data.db-shm
|
||
pCanBridge_data.db pCanBridge_data.db-wal pCanBridge_data.db-shm
|
||
pPowerManger.log pCCU.log
|
||
)
|
||
|
||
# 历史遗留目录(旧部署位置),仅当 --stale 时清理
|
||
STALE_DIRS=("${BOARD_DIR}/bin" "${BOARD_DIR}/src/bin")
|
||
|
||
info() { printf '\033[1;36m[clean-data]\033[0m %s\n' "$*"; }
|
||
ok() { printf '\033[1;32m[clean-data]\033[0m %s\n' "$*"; }
|
||
warn() { printf '\033[1;33m[clean-data]\033[0m %s\n' "$*"; }
|
||
err() { printf '\033[1;31m[clean-data]\033[0m %s\n' "$*"; }
|
||
|
||
usage() {
|
||
sed -n '2,31p' "${BASH_SOURCE[0]}" | sed 's/^# \{0,1\}//'
|
||
exit 0
|
||
}
|
||
|
||
#-------------------------------------------------------------------
|
||
# 参数解析
|
||
#-------------------------------------------------------------------
|
||
while [ $# -gt 0 ]; do
|
||
case "$1" in
|
||
--host) [ $# -ge 2 ] || { err "--host 需要参数"; exit 1; }; HOST="$2"; shift 2 ;;
|
||
--user) [ $# -ge 2 ] || { err "--user 需要参数"; exit 1; }; USER="$2"; shift 2 ;;
|
||
--board-dir) [ $# -ge 2 ] || { err "--board-dir 需要参数"; exit 1; }; BOARD_DIR="$2"; shift 2 ;;
|
||
--start) DO_START=1; shift ;;
|
||
--no-stop) DO_STOP=0; shift ;;
|
||
--stale) DO_STALE=1; shift ;;
|
||
-h|--help) usage ;;
|
||
*) err "未知参数: $1(见 --help)"; exit 1 ;;
|
||
esac
|
||
done
|
||
|
||
STALE_DIRS=("${BOARD_DIR}/bin" "${BOARD_DIR}/src/bin")
|
||
|
||
SSH_TARGET="${USER}@${HOST}"
|
||
SSH="ssh -o BatchMode=yes -o ConnectTimeout=5"
|
||
|
||
#-------------------------------------------------------------------
|
||
# 1. 前置检查
|
||
#-------------------------------------------------------------------
|
||
if ! ${SSH} "${SSH_TARGET}" 'true' 2>/dev/null; then
|
||
err "无法免密 SSH 到 ${SSH_TARGET}"
|
||
err "请先执行: ./scripts/deploy.sh setup-ssh"
|
||
exit 1
|
||
fi
|
||
ok "SSH 连接正常: ${SSH_TARGET}"
|
||
|
||
#-------------------------------------------------------------------
|
||
# 2. 停止服务(默认)
|
||
#-------------------------------------------------------------------
|
||
if [ "${DO_STOP}" = "1" ]; then
|
||
info "停止服务 ${SERVICES[*]} ..."
|
||
# 先停应用,最后停 moosdb
|
||
${SSH} "${SSH_TARGET}" "systemctl stop pCanBridge pPowerMangerHost pPowerManger pCCU moosdb 2>/dev/null; true"
|
||
ok "服务已停止"
|
||
else
|
||
warn "--no-stop:不停服务直接清理,可能产生脏数据(SQLite 仍在写入)"
|
||
fi
|
||
|
||
#-------------------------------------------------------------------
|
||
# 3. 清理 data 目录
|
||
#-------------------------------------------------------------------
|
||
BOARD_DATA="${BOARD_DIR}/data"
|
||
info "清理 ${BOARD_DATA}/ ..."
|
||
for f in "${DATA_FILES[@]}"; do
|
||
${SSH} "${SSH_TARGET}" "rm -f ${BOARD_DATA}/${f}" \
|
||
&& ok "删除 ${f}" || warn "删除 ${f} 失败(可能不存在)"
|
||
done
|
||
|
||
#-------------------------------------------------------------------
|
||
# 4. 可选: 清理历史遗留目录
|
||
#-------------------------------------------------------------------
|
||
if [ "${DO_STALE}" = "1" ]; then
|
||
for d in "${STALE_DIRS[@]}"; do
|
||
info "清理历史遗留 ${d}/ 下的 db/log ..."
|
||
${SSH} "${SSH_TARGET}" "rm -f ${d}/power_data.db ${d}/power_data.db-wal ${d}/power_data.db-shm ${d}/feedback_data.db ${d}/pPowerManger.log 2>/dev/null; true"
|
||
ok "${d} 已清理"
|
||
done
|
||
fi
|
||
|
||
#-------------------------------------------------------------------
|
||
# 5. 可选: 重启服务
|
||
#-------------------------------------------------------------------
|
||
if [ "${DO_START}" = "1" ]; then
|
||
info "启动服务 (moosdb -> pPowerManger / pPowerMangerHost / pCCU / pCanBridge) ..."
|
||
${SSH} "${SSH_TARGET}" "systemctl start moosdb && sleep 1 && \
|
||
systemctl start pPowerManger pPowerMangerHost pCCU pCanBridge" \
|
||
|| { err "启动失败"; exit 1; }
|
||
ok "服务已启动"
|
||
else
|
||
echo ""
|
||
info "清理完成,服务未启动。需要重启请加 --start 或手动:"
|
||
echo " systemctl start moosdb pPowerManger pPowerMangerHost pCCU pCanBridge"
|
||
fi
|
||
|
||
echo ""
|
||
ok "完成。"
|