139 lines
3.4 KiB
Bash
Executable File
139 lines
3.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Local Voice 启动脚本 - 先更新后启动应用
|
|
# 合并自动更新和应用启动功能
|
|
|
|
LOG_FILE="/home/zhuchaowe/logs/startup.log"
|
|
DOWNLOAD_URL="http://120.26.23.172:8082/Local-Voice.tar"
|
|
BACKUP_DIR="/home/zhuchaowe/Local-Voice-backup-$(date +%Y%m%d_%H%M%S)"
|
|
LOCAL_VOICE_DIR="/home/zhuchaowe/Local-Voice"
|
|
|
|
# 创建日志目录
|
|
mkdir -p /home/zhuchaowe/logs
|
|
|
|
# 日志函数
|
|
log() {
|
|
local message="[$(date '+%Y-%m-%d %H:%M:%S')] $1"
|
|
echo "$message" | tee -a "$LOG_FILE"
|
|
}
|
|
|
|
# 错误处理函数
|
|
error_exit() {
|
|
log "错误: $1"
|
|
exit 1
|
|
}
|
|
|
|
# 检查网络连接
|
|
check_network() {
|
|
log "检查网络连接..."
|
|
if ping -c 1 120.26.23.172 > /dev/null 2>&1; then
|
|
log "网络连接正常"
|
|
return 0
|
|
else
|
|
log "网络连接失败,跳过更新"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# 备份现有代码
|
|
backup_existing_code() {
|
|
log "备份现有代码到 $BACKUP_DIR..."
|
|
if cp -r "$LOCAL_VOICE_DIR" "$BACKUP_DIR"; then
|
|
log "备份成功"
|
|
else
|
|
log "备份失败,跳过更新"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# 更新代码
|
|
update_code() {
|
|
log "开始更新代码..."
|
|
|
|
# 进入临时目录
|
|
cd /tmp || error_exit "无法进入临时目录"
|
|
|
|
# 删除旧的下载文件(如果存在)
|
|
rm -f Local-Voice.tar
|
|
rm -rf Local-Voice-extracted
|
|
|
|
# 下载最新代码
|
|
log "下载更新文件..."
|
|
if wget -O Local-Voice.tar "$DOWNLOAD_URL"; then
|
|
log "下载成功"
|
|
else
|
|
log "下载文件失败,跳过更新"
|
|
return 1
|
|
fi
|
|
|
|
# 解压文件
|
|
log "解压文件..."
|
|
mkdir -p Local-Voice-extracted
|
|
if tar -xf Local-Voice.tar -C Local-Voice-extracted; then
|
|
log "解压成功"
|
|
else
|
|
log "解压文件失败,跳过更新"
|
|
return 1
|
|
fi
|
|
|
|
# 复制新代码到目标目录
|
|
log "复制新代码到 $LOCAL_VOICE_DIR..."
|
|
cp -r Local-Voice-extracted/Local-Voice/* "$LOCAL_VOICE_DIR"/ || error_exit "复制代码失败"
|
|
|
|
# 恢复文件权限
|
|
log "恢复文件权限..."
|
|
chmod +x "$LOCAL_VOICE_DIR"/*.sh
|
|
chmod +x "$LOCAL_VOICE_DIR"/test-*.py
|
|
|
|
# 清理临时文件
|
|
cd /tmp
|
|
rm -f Local-Voice.tar
|
|
rm -rf Local-Voice-extracted
|
|
|
|
log "代码更新完成"
|
|
}
|
|
|
|
# 清理旧备份
|
|
cleanup_old_backups() {
|
|
log "清理旧备份文件..."
|
|
# 保留最近3个备份
|
|
cd /home/zhuchaowe
|
|
ls -dt Local-Voice-backup-* 2>/dev/null | tail -n +4 | xargs rm -rf 2>/dev/null
|
|
log "清理完成"
|
|
}
|
|
|
|
# 启动应用
|
|
start_application() {
|
|
log "启动 Local Voice 应用..."
|
|
cd "$LOCAL_VOICE_DIR" || error_exit "无法进入应用目录"
|
|
|
|
# 启动 multiprocess_recorder.py
|
|
log "执行: python3 multiprocess_recorder.py --enable-led --led-count 10 --led-brightness 80 --led-pin 10 --enable-nfc"
|
|
exec python3 multiprocess_recorder.py --enable-led --led-count 10 --led-brightness 80 --led-pin 10 --enable-nfc
|
|
}
|
|
|
|
# 主函数
|
|
main() {
|
|
log "=== Local Voice 启动脚本开始 ==="
|
|
|
|
# 检查 Local-Voice 目录是否存在
|
|
if [ ! -d "$LOCAL_VOICE_DIR" ]; then
|
|
log "Local-Voice 目录不存在,创建新目录"
|
|
mkdir -p "$LOCAL_VOICE_DIR"
|
|
fi
|
|
|
|
# 尝试更新代码
|
|
if check_network; then
|
|
if backup_existing_code; then
|
|
update_code
|
|
cleanup_old_backups
|
|
fi
|
|
fi
|
|
|
|
log "=== 启动应用 ==="
|
|
start_application
|
|
}
|
|
|
|
# 执行主函数
|
|
main 2>&1 | tee -a "$LOG_FILE"
|