add clean
This commit is contained in:
parent
2d403e2965
commit
88e258611e
16
auto-update.service
Normal file
16
auto-update.service
Normal file
@ -0,0 +1,16 @@
|
||||
[Unit]
|
||||
Description=Local-Voice Auto Update Service
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
User=zhuchaowe
|
||||
WorkingDirectory=/home/zhuchaowe/Local-Voice
|
||||
ExecStart=/home/zhuchaowe/Local-Voice/auto_update.sh
|
||||
RemainAfterExit=yes
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
146
auto_update.sh
Executable file
146
auto_update.sh
Executable file
@ -0,0 +1,146 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 自动更新脚本
|
||||
# 从指定URL下载tar文件并覆盖 Local-Voice 文件夹
|
||||
|
||||
LOG_FILE="/home/zhuchaowe/logs/auto_update.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
|
||||
}
|
||||
|
||||
# 等待网络连接
|
||||
wait_for_network() {
|
||||
local max_attempts=30
|
||||
local attempt=1
|
||||
|
||||
while [ $attempt -le $max_attempts ]; do
|
||||
log "尝试连接网络 ($attempt/$max_attempts)..."
|
||||
if check_network; then
|
||||
return 0
|
||||
fi
|
||||
sleep 5
|
||||
attempt=$((attempt + 1))
|
||||
done
|
||||
|
||||
error_exit "网络连接超时"
|
||||
}
|
||||
|
||||
# 备份现有代码
|
||||
backup_existing_code() {
|
||||
log "备份现有代码到 $BACKUP_DIR..."
|
||||
if cp -r "$LOCAL_VOICE_DIR" "$BACKUP_DIR"; then
|
||||
log "备份成功"
|
||||
else
|
||||
error_exit "备份失败"
|
||||
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
|
||||
error_exit "下载文件失败"
|
||||
fi
|
||||
|
||||
# 解压文件
|
||||
log "解压文件..."
|
||||
mkdir -p Local-Voice-extracted
|
||||
if tar -xf Local-Voice.tar -C Local-Voice-extracted; then
|
||||
log "解压成功"
|
||||
else
|
||||
error_exit "解压文件失败"
|
||||
fi
|
||||
|
||||
# 复制新代码到目标目录
|
||||
log "复制新代码到 $LOCAL_VOICE_DIR..."
|
||||
cp -r Local-Voice-extracted/* "$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 "清理旧备份文件..."
|
||||
# 保留最近5个备份
|
||||
cd /home/zhuchaowe
|
||||
ls -dt Local-Voice-backup-* | tail -n +6 | xargs rm -rf
|
||||
log "清理完成"
|
||||
}
|
||||
|
||||
# 主函数
|
||||
main() {
|
||||
log "=== 开始自动更新 ==="
|
||||
|
||||
# 等待网络连接
|
||||
wait_for_network
|
||||
|
||||
# 检查 Local-Voice 目录是否存在
|
||||
if [ ! -d "$LOCAL_VOICE_DIR" ]; then
|
||||
log "Local-Voice 目录不存在,创建新目录"
|
||||
mkdir -p "$LOCAL_VOICE_DIR"
|
||||
fi
|
||||
|
||||
# 备份现有代码
|
||||
backup_existing_code
|
||||
|
||||
# 更新代码
|
||||
update_code
|
||||
|
||||
# 清理旧备份
|
||||
cleanup_old_backups
|
||||
|
||||
log "=== 自动更新完成 ==="
|
||||
echo "Auto update completed successfully at $(date '+%Y-%m-%d %H:%M:%S')"
|
||||
}
|
||||
|
||||
# 执行主函数
|
||||
main 2>&1 | tee -a "$LOG_FILE"
|
||||
@ -6,7 +6,7 @@ Wants=network.target sound.target pipewire-pulse.service
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=/home/zhuchaowe/Local-Voice
|
||||
ExecStart=/usr/bin/python3 /home/zhuchaowe/Local-Voice/multiprocess_recorder.py --enable-nfc
|
||||
ExecStart=/home/zhuchaowe/Local-Voice/start-local-voice.sh
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
StandardOutput=journal
|
||||
|
||||
@ -1,24 +0,0 @@
|
||||
[Unit]
|
||||
Description=Local Voice Multiprocess Recorder with NFC
|
||||
After=network.target sound.target
|
||||
Wants=network.target sound.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=zhuchaowe
|
||||
Group=audio
|
||||
WorkingDirectory=/home/zhuchaowe/Local-Voice
|
||||
Environment="PULSE_SERVER=unix:/run/user/%U/pulse/native"
|
||||
Environment="XDG_RUNTIME_DIR=/run/user/%U"
|
||||
Environment="DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%U/bus"
|
||||
ExecStart=/usr/bin/python3 /home/zhuchaowe/Local-Voice/multiprocess_recorder.py --enable-nfc
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
# 添加设备访问权限
|
||||
DeviceAllow=/dev/snd/*
|
||||
DevicePolicy=auto
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
138
start-local-voice.sh
Executable file
138
start-local-voice.sh
Executable file
@ -0,0 +1,138 @@
|
||||
#!/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_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-nfc"
|
||||
exec python3 multiprocess_recorder.py --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"
|
||||
Loading…
Reference in New Issue
Block a user