|
|
@@ -0,0 +1,102 @@
|
|
|
+#!/bin/sh
|
|
|
+
|
|
|
+# 加载公共函数库
|
|
|
+. /app/common.sh
|
|
|
+
|
|
|
+# 设置定时任务
|
|
|
+setup_cron() {
|
|
|
+ # 获取当前时间的上一分钟作为执行时间
|
|
|
+ # 格式: 分 时 * * *
|
|
|
+ current_min=$(date +%M)
|
|
|
+ current_hour=$(date +%H)
|
|
|
+
|
|
|
+ # 计算上一分钟对应的分钟和小时
|
|
|
+ if [ "$current_min" -eq 0 ]; then
|
|
|
+ cron_min=59
|
|
|
+ if [ "$current_hour" -eq 0 ]; then
|
|
|
+ cron_hour=23
|
|
|
+ else
|
|
|
+ cron_hour=$((current_hour - 1))
|
|
|
+ fi
|
|
|
+ else
|
|
|
+ cron_min=$((current_min - 1))
|
|
|
+ cron_hour=$current_hour
|
|
|
+ fi
|
|
|
+
|
|
|
+ # 去掉前导零(避免被解释为八进制)
|
|
|
+ cron_min=$(echo $cron_min | sed 's/^0//')
|
|
|
+ cron_hour=$(echo $cron_hour | sed 's/^0//')
|
|
|
+
|
|
|
+ # 如果为空则设为0
|
|
|
+ [ -z "$cron_min" ] && cron_min=0
|
|
|
+ [ -z "$cron_hour" ] && cron_hour=0
|
|
|
+
|
|
|
+ cron_entry="$cron_min $cron_hour * * * sh $UPDATE_SCRIPT >> /app/update.log 2>&1"
|
|
|
+
|
|
|
+ echo "设置定时任务: 每天 ${cron_hour}:${cron_min} 执行更新检测"
|
|
|
+
|
|
|
+ # 确保cron目录存在
|
|
|
+ mkdir -p /var/spool/cron/crontabs
|
|
|
+
|
|
|
+ # 删除旧的更新任务(如果存在)
|
|
|
+ if [ -f "$CRON_FILE" ]; then
|
|
|
+ grep -v "$UPDATE_SCRIPT" "$CRON_FILE" > "${CRON_FILE}.tmp" 2>/dev/null || true
|
|
|
+ mv "${CRON_FILE}.tmp" "$CRON_FILE"
|
|
|
+ fi
|
|
|
+
|
|
|
+ # 添加新的定时任务
|
|
|
+ echo "$cron_entry" >> "$CRON_FILE"
|
|
|
+
|
|
|
+ # 启动crond(busybox crond)
|
|
|
+ crond -b -l 8
|
|
|
+ echo "crond 已启动"
|
|
|
+}
|
|
|
+
|
|
|
+# 仅更新模式(构建时使用)
|
|
|
+if [ "${1}" = "OnlyUpdate" ]; then
|
|
|
+ echo "构建模式:下载初始版本..."
|
|
|
+
|
|
|
+ ftag_name=$(get_latest_version)
|
|
|
+
|
|
|
+ if [ -z "$ftag_name" ]; then
|
|
|
+ echo "无法获取最新版本号,使用默认版本 ${DEFAULT_VERSION}"
|
|
|
+ ftag_name="$DEFAULT_VERSION"
|
|
|
+ fi
|
|
|
+
|
|
|
+ echo "版本: ${ftag_name}"
|
|
|
+
|
|
|
+ if download_version "$ftag_name" "$MIXAPI_BIN"; then
|
|
|
+ save_version "$ftag_name"
|
|
|
+ echo "下载完成"
|
|
|
+ else
|
|
|
+ echo "下载失败"
|
|
|
+ exit 1
|
|
|
+ fi
|
|
|
+
|
|
|
+ exit 0
|
|
|
+fi
|
|
|
+
|
|
|
+# 正常启动模式
|
|
|
+echo "启动 mixapi 服务..."
|
|
|
+
|
|
|
+# 检查本地是否有可执行文件
|
|
|
+if [ ! -f "$MIXAPI_BIN" ]; then
|
|
|
+ echo "本地没有可执行文件,先下载..."
|
|
|
+ ftag_name=$(get_latest_version)
|
|
|
+ if [ -z "$ftag_name" ]; then
|
|
|
+ ftag_name="$DEFAULT_VERSION"
|
|
|
+ fi
|
|
|
+ download_version "$ftag_name" "$MIXAPI_BIN"
|
|
|
+ save_version "$ftag_name"
|
|
|
+fi
|
|
|
+
|
|
|
+# 设置定时任务
|
|
|
+setup_cron
|
|
|
+
|
|
|
+# 启动时先执行一次更新检测(后台)
|
|
|
+echo "启动时执行一次更新检测..."
|
|
|
+sh "$UPDATE_SCRIPT" &
|
|
|
+
|
|
|
+# 启动 mixapi(前台运行,保持容器运行)
|
|
|
+echo "启动 mixapi..."
|
|
|
+exec "$MIXAPI_BIN"
|