openclaw / scripts /start-openclaw.sh
zngw's picture
Update scripts/start-openclaw.sh
c4c0f88 verified
Raw
History Blame Contribute Delete
1.92 kB
#!/bin/bash
set -e
# 捕获信号以优雅关闭
trap "echo '收到终止信号,正在关闭后台任务...'; kill -TERM '$CHILD_PID' 2>/dev/null; exit 0" SIGTERM SIGINT
echo "--- [Start] 初始化 OpenClaw 环境 ---"
# 1. 数据恢复
echo "--- [Start] 执行数据恢复 ---"
python3 /usr/local/bin/sync.py restore
# 2. 验证配置json
echo "--- [Start] 验证配置openclaw.json ---"
if command -v jq &> /dev/null; then
if ! jq empty "/root/.openclaw/openclaw.json" 2>/dev/null; then
echo "警告: 配置的 openclaw.json 可能格式有误,请检查配置。"
cat "/root/.openclaw/openclaw.json"
else
echo "配置文件格式有效。"
fi
fi
# 3. 更新
echo "--- [Start] 检查更新 ---"
openclaw update --yes --no-restart
# 4. 启动后台任务
echo "--- [Start] 启动后台守护进程 ---"
{
sleep 10
# 后台单独执行 Telegram DNS判断
/usr/local/bin/telegram-dns-check.sh
} &
(
sleep 60
# 任务 A: 自动批准 (每 10 分钟 = 600 秒)
while true; do
echo "[Cron] 执行设备自动批准..."
python3 /usr/local/bin/pending.py
sleep 600
done
) &
PID_APPROVE=$!
(
# 任务 B: 数据备份 (每 10 小时 = 36000 秒)
# 先等待一小会儿再开始第一次备份,避免启动瞬间占用资源
sleep 610
while true; do
echo "[Cron] 执行数据备份..."
python3 /usr/local/bin/sync.py backup
sleep 36000
done
) &
PID_BACKUP=$!
# 记录子进程 ID 用于信号处理
CHILD_PID="$PID_APPROVE $PID_BACKUP"
# 5. 运行诊断修复
#echo "--- [Start] 运行 Doctor 修复 ---"
#openclaw doctor --fix || echo "--- [Warning] Doctor 修复完成但有警告 ---"
# 6. 启动主服务
echo "--- [Start] 启动 OpenClaw Gateway (端口: ${PORT}) ---"
# exec 替换当前 shell,使 openclaw 成为 PID 1,便于接收信号
exec openclaw gateway run --port ${PORT}