#!/bin/bash # 测"开机 -> 服务可用"要多久,看能不能缩短 set -u echo "════════ 1. 系统启动耗时 ════════" systemd-analyze 2>/dev/null | sed 's/^/ /' echo echo " 最慢的几项:" systemd-analyze blame 2>/dev/null | head -12 | sed 's/^/ /' echo echo "════════ 2. 关键服务的启动时刻 ════════" BOOT=$(date -d "$(uptime -s)" +%s 2>/dev/null || echo 0) for svc in lanremote-nettune lanremote-relay lanremote-tunnel; do ts=$(systemctl show "$svc" -p ActiveEnterTimestampMonotonic --value 2>/dev/null) if [ -n "$ts" ] && [ "$ts" != "0" ]; then sec=$((ts / 1000000)) printf " %-24s 开机后 %s 秒\n" "$svc" "$sec" else printf " %-24s (读不到)\n" "$svc" fi done echo echo "════════ 3. 隧道是什么时候连上的 ════════" grep -m3 'Registered tunnel connection' /root/lanremote-relay/tunnel.log 2>/dev/null \ | sed 's/^/ /' echo " 当前时间: $(date -u '+%Y-%m-%dT%H:%M:%SZ')" echo " 日志里第一条注册时间戳对比一下就知道隔了多久" echo echo "════════ 4. 开机第一条日志到隧道可用,中间卡在哪 ════════" journalctl -b --no-pager 2>/dev/null \ | grep -E 'lanremote|cloudflared|Reached target network|Startup finished' \ | head -20 | sed 's/^/ /' echo echo "════════ 5. network-online.target 花了多久 ════════" journalctl -b --no-pager -u NetworkManager -u systemd-networkd 2>/dev/null \ | grep -iE 'online|carrier|dhcp|connected' | head -8 | sed 's/^/ /' echo echo "════════ 6. 有没有办法提前(当前依赖链)════════" systemctl show lanremote-tunnel -p After -p Wants -p Requires --value 2>/dev/null | sed 's/^/ /' echo echo "════════ 7. watchdog 间隔现在是多久 ════════" grep -E 'OnUnitActiveSec|OnBootSec' /etc/systemd/system/lanremote-watchdog.timer 2>/dev/null | sed 's/^/ /' systemctl cat lanremote-watchdog.timer 2>/dev/null | grep -E 'OnUnit|OnBoot' | sed 's/^/ /'