#!/bin/bash # 查清 watchdog 的调度方式 + 两个 cloudflared 实例的完整参数 set -u echo "════════ 1. watchdog 怎么被调度的 ════════" echo " systemd 单元:" systemctl list-units --all --no-pager 2>/dev/null | grep -i watchdog | sed 's/^/ /' echo " timer:" systemctl list-timers --all --no-pager 2>/dev/null | grep -i watchdog | sed 's/^/ /' echo " cron:" crontab -l 2>/dev/null | grep -i watchdog | sed 's/^/ /' || echo " (没有)" echo " /etc/cron.d:" grep -ri watchdog /etc/cron.d/ /etc/cron.daily/ 2>/dev/null | sed 's/^/ /' || echo " (没有)" echo " rc.local:" grep -i watchdog /etc/rc.local 2>/dev/null | sed 's/^/ /' || echo " (没有)" echo " 是否有 watchdog 进程在跑:" pgrep -af 'watchdog' | sed 's/^/ /' || echo " (没有)" echo echo "════════ 2. /etc/systemd/system 里所有 lanremote 单元 ════════" ls -la /etc/systemd/system/ 2>/dev/null | grep -iE 'lanremote|watchdog' | sed 's/^/ /' echo echo "════════ 3. 两个 cloudflared 进程的完整命令行 ════════" for p in $(pgrep cloudflared); do echo " ── pid $p ──" tr '\0' ' ' < /proc/$p/cmdline 2>/dev/null | sed 's/^/ /' echo echo " 启动于: $(ps -o lstart= -p $p 2>/dev/null)" echo " 内存: $(ps -o rss= -p $p 2>/dev/null) KB" echo " 父进程: $(ps -o ppid= -p $p 2>/dev/null | tr -d ' ') -> $(cat /proc/$p/cgroup 2>/dev/null | head -1)" done echo echo "════════ 4. 两个实例的 ExecStart ════════" echo " ── 主 (lanremote-tunnel) ──" systemctl cat lanremote-tunnel 2>/dev/null | grep -E 'ExecStart|StandardOutput|MemoryMax' | sed 's/^/ /' echo " ── 副 (lanremote-tunnel-h2) ──" systemctl cat lanremote-tunnel-h2 2>/dev/null | grep -E 'ExecStart|StandardOutput|MemoryMax' | sed 's/^/ /' echo echo "════════ 5. 各自绑的 metrics 端口 ════════" ss -tlnp 2>/dev/null | grep -E '2024[0-9]' | sed 's/^/ /' for port in 20240 20241 20242 20243; do n=$(curl -s --max-time 3 http://127.0.0.1:$port/metrics 2>/dev/null \ | grep '^cloudflared_tunnel_ha_connections' | awk '{print $2}') echo " 端口 $port: ha_connections=${n:-(无响应)}" done echo echo "════════ 6. 两个实例各自最近的连接事件 ════════" echo " ── 主 (tunnel.log) 最近 8 条 ──" grep -E 'Registered|Lost|Failed to dial|Unregistered' /root/lanremote-relay/tunnel.log 2>/dev/null | tail -8 | sed 's/^/ /' echo " ── 副 (tunnel-h2.log) 最近 8 条 ──" grep -E 'Registered|Lost|Failed to dial|Unregistered' /root/lanremote-relay/tunnel-h2.log 2>/dev/null | tail -8 | sed 's/^/ /'