请确保你当前在 Termux 本地终端(提示符为 ~ $,然后依次复制并执行以下三大块代码:

🛠️ 第一块:写入 Ubuntu 核心守护脚本 (Watchdog & Monitor)

这段代码会直接穿透进 Ubuntu,把负责“自动重启”和“状态通知及日志清理”的两个脚本写好。

Bash

# 1. 写入 Watchdog (哨兵:负责死而复生)
proot-distro login ubuntu -- tee /root/watchdog.sh << 'SCRIPT'
#!/bin/bash
LOG=/root/watchdog.log
mkdir -p /root
echo "=== Watchdog Started at $(date) ===" >> $LOG

while true; do
  if ! pgrep -f "openclaw-gateway" > /dev/null 2>&1; then
    echo "[$(date)] 警告: openclaw-gateway 没在运行,启动中..." >> $LOG
    openclaw gateway >> /root/openclaw.log 2>&1 &
    sleep 30
  else
    echo "[$(date)] 状态正常: 运行中" >> $LOG
  fi
  sleep 60
done
SCRIPT

# 2. 写入 Monitor (监控:负责通知和日志轮转)
proot-distro login ubuntu -- tee /root/monitor.sh << 'SCRIPT'
#!/bin/bash
LOG_DIR=/root
MAX_SIZE_MB=200
LAST_STATUS="ok"

while true; do
  CURRENT_STATUS=$(pgrep -f "openclaw-gateway" > /dev/null && echo "ok" || echo "down")
  
  # --- 通知逻辑 ---
  if [ "$CURRENT_STATUS" = "down" ] && [ "$LAST_STATUS" = "ok" ]; then
    command -v termux-notification >/dev/null && termux-notification --title "OpenClaw 告警" --content "机器人已停止运行,哨兵正在尝试拉起..." --priority high
  fi

  if [ "$CURRENT_STATUS" = "ok" ] && [ "$LAST_STATUS" = "down" ]; then
    command -v termux-notification >/dev/null && termux-notification --title "OpenClaw 状态" --content "机器人已成功复活并恢复运行!" --priority low
  fi
  LAST_STATUS=$CURRENT_STATUS
  echo "[$(date)] Status: $CURRENT_STATUS" >> /root/monitor.log

  # --- 日志清理逻辑 ---
  SIZE=$(du -sm /root/openclaw.log 2>/dev/null | cut -f1)
  if [ "${SIZE:-0}" -gt $MAX_SIZE_MB ]; then
    mv /root/openclaw.log /root/openclaw.log.bak
    > /root/openclaw.log
    find /root -name "openclaw.log.bak*" -mtime +3 -delete
    echo "[$(date)] 日志超过 ${MAX_SIZE_MB}MB,已清理" >> /root/monitor.log
  fi

  sleep 300
done
SCRIPT

# 3. 赋予执行权限
proot-distro login ubuntu -- chmod +x /root/watchdog.sh /root/monitor.sh

🚀 第二块:写入手机开机自启脚本 (Termux Boot)

这段代码会在 Termux 专属的开机目录里生成启动文件,确保手机重启后自动拉起 Tmux 和上述两个脚本。

Bash

# 1. 创建开机启动目录
mkdir -p ~/.termux/boot

# 2. 写入 SSH 自启脚本
cat > ~/.termux/boot/start-ssh.sh << 'EOF'
#!/data/data/com.termux/files/usr/bin/bash
sshd
EOF

# 3. 写入 OpenClaw 全家桶自启脚本
cat > ~/.termux/boot/start-openclaw.sh << 'EOF'
#!/data/data/com.termux/files/usr/bin/bash
# 锁定唤醒,防止系统休眠杀进程
termux-wake-lock &

# 等待20秒,确保手机网络和系统完全加载
sleep 20

# 杀掉可能残留的僵尸会话,确保干净启动
tmux kill-session -t openclaw 2>/dev/null

# 启动 Tmux 会话,在窗口 0 运行 Watchdog
tmux new-session -d -s openclaw "proot-distro login ubuntu -- bash /root/watchdog.sh"

# 等待 5 秒后,在窗口 1 运行 Monitor
sleep 5
tmux new-window -t openclaw -n monitor "proot-distro login ubuntu -- bash /root/monitor.sh"

# 发送开机成功通知
termux-notification --title "OpenClaw 启动成功" --content "全套生产级服务已在后台运行" --id 1
EOF

# 4. 赋予执行权限
chmod +x ~/.termux/boot/*.sh

⚡ 第三块:一键立即启动所有服务

脚本全部写好了,你不需要真的去重启手机,直接运行我们刚写好的开机脚本,让它现在就生效:

Bash

# 杀掉现有的所有可能冲突的进程
proot-distro login ubuntu -- pkill -f openclaw
tmux kill-server 2>/dev/null

# 运行全套自启脚本
bash ~/.termux/boot/start-openclaw.sh

执行完毕后,等待大约 20 秒,你可以使用 tmux ls 来验证。如果看到 openclaw: 2 windows,那就说明这套包含了崩溃告警、复活通知、日志轮转的完美生产级系统,已经彻底部署成功了!