49 lines
1.3 KiB
Bash
Executable File
49 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
WORKSPACE="/home/openclaw/.openclaw/workspace"
|
|
LOG="${WORKSPACE}/logs/guardian-recover.log"
|
|
TS="$(date -u +'%F %T UTC')"
|
|
|
|
log(){
|
|
echo "[$TS] $*" >> "$LOG"
|
|
}
|
|
|
|
mkdir -p "${WORKSPACE}/logs"
|
|
|
|
if openclaw status >/dev/null 2>&1; then
|
|
log "ok: openclaw status healthy"
|
|
exit 0
|
|
fi
|
|
|
|
log "warn: openclaw unhealthy, restarting gateway"
|
|
openclaw gateway restart >/dev/null 2>&1 || true
|
|
sleep 3
|
|
|
|
if openclaw status >/dev/null 2>&1; then
|
|
log "ok: recovered after gateway restart"
|
|
exit 0
|
|
fi
|
|
|
|
log "warn: still unhealthy, restarting user gateway service"
|
|
systemctl --user restart openclaw-gateway.service >/dev/null 2>&1 || true
|
|
sleep 3
|
|
|
|
if openclaw status >/dev/null 2>&1; then
|
|
log "ok: recovered after service restart"
|
|
exit 0
|
|
fi
|
|
|
|
# Optional hard restore from main branch in gitea (OFF by default)
|
|
# Enable by setting GUARDIAN_HARD_RESET=1 in service Environment.
|
|
if [[ "${GUARDIAN_HARD_RESET:-0}" == "1" ]]; then
|
|
log "warn: hard reset enabled, restoring workspace from gitea/main"
|
|
GIT_SSH_COMMAND='ssh -i /home/openclaw/.ssh/id_ed25519_vps_openclaw_45158 -o IdentitiesOnly=yes' \
|
|
git -C "$WORKSPACE" fetch gitea main >/dev/null 2>&1 || true
|
|
git -C "$WORKSPACE" reset --hard gitea/main >/dev/null 2>&1 || true
|
|
log "warn: hard reset attempted"
|
|
fi
|
|
|
|
log "error: unrecovered"
|
|
exit 1
|