#!/bin/bash # 深挖:"被控端一提交配对码,隧道就掉(1033)" # # 1033 = cloudflared 没连上 Cloudflare(不是 502 那种源站问题) # 所以要看:cloudflared 是不是被杀 / OOM / 崩了 set -u RELAY_DIR=/root/lanremote-relay URL=https://relay.xxmxxs.top echo "===== 1. 内存(460MB 的小机器,OOM 是头号嫌疑)=====" free -m | sed 's/^/ /' echo -n " swap: " swapon --show 2>/dev/null | tail -1 || echo "(没有 swap)" echo echo "===== 2. 内核有没有杀进程(OOM killer)=====" dmesg 2>/dev/null | grep -iE 'killed process|out of memory|oom' | tail -8 | sed 's/^/ /' || echo " 读不到 dmesg" echo " journal 里的 OOM:" journalctl -k --no-pager 2>/dev/null | grep -iE 'killed process|oom' | tail -6 | sed 's/^/ /' || echo " 没有" echo echo "===== 3. 服务重启过几次 =====" for s in lanremote-relay lanremote-tunnel; do printf " %-22s NRestarts=%s 状态=%s\n" "$s" \ "$(systemctl show $s -p NRestarts --value 2>/dev/null)" \ "$(systemctl is-active $s 2>/dev/null)" echo " 最近 3 条日志:" journalctl -u "$s" --no-pager -n 3 2>/dev/null | sed 's/^/ /' done echo echo "===== 4. 现在各进程吃多少内存 =====" ps -eo rss,comm --sort=-rss 2>/dev/null | head -10 | sed 's/^/ /' echo echo "===== 5. 隧道连接数 + 公网 =====" echo -n " ha_connections = " curl -s --max-time 5 http://127.0.0.1:20241/metrics 2>/dev/null \ | grep '^cloudflared_tunnel_ha_connections' | awk '{print $2}' echo " 公网: HTTP $(timeout 15 curl -4 -s -o /dev/null -w '%{http_code}' \ -H 'User-Agent: LanRemote/1.4.0' $URL/v1/health 2>/dev/null)" echo echo "===== 6. 看门狗最近动作 =====" tail -10 "$RELAY_DIR/watchdog.log" 2>/dev/null | sed 's/^/ /' echo echo "===== 7. 中转自身的内存上限 =====" echo " relay 的 MemoryMax: $(systemctl show lanremote-relay -p MemoryMax --value 2>/dev/null)" echo " tunnel 的 MemoryMax: $(systemctl show lanremote-tunnel -p MemoryMax --value 2>/dev/null)" echo " relay 的 MemoryCurrent: $(systemctl show lanremote-relay -p MemoryCurrent --value 2>/dev/null)" echo " tunnel 的 MemoryCurrent: $(systemctl show lanremote-tunnel -p MemoryCurrent --value 2>/dev/null)" echo echo "===== 8. 系统整体 OOM 配额 =====" cat /proc/sys/vm/panic_on_oom 2>/dev/null | sed 's/^/ panic_on_oom=/' cat /proc/sys/vm/oom_kill_allocating_task 2>/dev/null | sed 's/^/ oom_kill_allocating_task=/' echo " 设备内存: $(grep MemTotal /proc/meminfo | awk '{print int($2/1024)}') MB"