#!/bin/bash # watchdog 检查间隔 20 秒 -> 10 秒 # # 为什么:每次 530 窗口从"出现"到"被看门狗发现并重启", # 最长要等一个检查周期。20 秒 -> 10 秒,用户撞上 1033 的 # 概率窗口直接减半。 # # 代价:curl 更频繁(每 10 秒一次公网请求)。 # 这台设备 4G 流量很小,而且本来就一直在长轮询,可以忽略。 set -u echo " 改前:" grep -E 'OnBootSec|OnUnitActiveSec|AccuracySec' /etc/systemd/system/lanremote-watchdog.timer | sed 's/^/ /' cat > /etc/systemd/system/lanremote-watchdog.timer <<'EOF' [Unit] Description=每 10 秒检查一次隧道连接数 [Timer] # 20 秒 -> 10 秒:从"出问题"到"被重启"的等待窗口减半。 # 开机后 45 秒开始第一次(隧道一般几十秒就连上了)。 OnBootSec=45s OnUnitActiveSec=10s AccuracySec=3s Unit=lanremote-watchdog.service [Install] WantedBy=timers.target EOF systemctl daemon-reload systemctl restart lanremote-watchdog.timer echo echo " 改后:" grep -E 'OnBootSec|OnUnitActiveSec|AccuracySec' /etc/systemd/system/lanremote-watchdog.timer | sed 's/^/ /' echo " 定时器状态: $(systemctl is-active lanremote-watchdog.timer)" systemctl list-timers lanremote-watchdog.timer --no-pager 2>/dev/null | head -3 | sed 's/^/ /' echo echo " 立即跑一次确认不报错:" bash /root/lanremote-relay/watchdog.sh 2>&1 | tail -2 | sed 's/^/ /'