Files
my-project/config/openclaw/scripts/dododo_service.sh
T

54 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
# dododo 服务: 支持并发执行
# 修复版: 智能等待,不再疯狂重启
LOG_FILE="/var/log/openclaw/dododo.log"
LOCK_FILE="/tmp/dododo_service.lock"
# 避免重复启动
if [ -f "$LOCK_FILE" ]; then
PID=$(cat "$LOCK_FILE")
if kill -0 "$PID" 2>/dev/null; then
echo "$(date) - dododo 已在运行 (PID: $PID)"
exit 1
fi
fi
echo $$ > "$LOCK_FILE"
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE
}
log "========== dododo_service 启动 =========="
while true; do
# 检查是否应该运行
CURRENT_MIN=$(date '+%M')
CURRENT_HOUR=$(date '+%H')
# 只在每小时的 02-55 分运行
if [ "$CURRENT_MIN" -ge 2 ] && [ "$CURRENT_MIN" -lt 55 ]; then
log "========== $CURRENT_HOUR:$CURRENT_MIN - dododo.py 启动 =========="
cd /root/.openclaw/workspace && python3 dododo.py --auto --wait 30 --stop-minute 55 --workers 3 2>&1 | while read line; do
log "$line"
done
EXIT_CODE=$?
log "dododo.py 退出码: $EXIT_CODE"
else:
# 不在运行时间段,等待到下个02分
if [ "$CURRENT_MIN" -lt 2 ]; then
WAIT_MIN=$((2 - CURRENT_MIN))
else
WAIT_MIN=$((60 - CURRENT_MIN + 2))
fi
WAIT_SEC=$((WAIT_MIN * 60))
log "不在运行时间 ($CURRENT_HOUR:$CURRENT_MIN),等待 ${WAIT_MIN} 分钟..."
sleep $WAIT_SEC
fi
# 休息一下再检查,避免CPU空转
sleep 10
done