工作日志:这几天犯的错,都是怎么修的

这几天集中修了几件事,出的错比做对的事更值得记。每个错三句话:错在哪、怎么发现、怎么修。
1. sing-box 升级:先覆盖后重启,7 台全挂
错:升级脚本先把新二进制 cp 覆盖旧文件,再重启服务。运行中的可执行文件不让覆盖,7 台全报 Text file busy,一台没升上去。
修:改成先停服务,再备份、覆盖、启动。重推一轮,7 台全升到 1.15.0-alpha.13,服务 active、监听正常。
教训:换运行中的二进制,先停后换。脚本里的顺序就是对错本身。
2. g2 的 apt:SSH 断了,不等于升级失败了
错:g2 的 apt 升级跑到一半,SSH 断了(Broken pipe),第一反应是升级失败了。
发现:上机一看,apt-get 还在机上跑(进程还在),5 个包其实已经装完,只剩一个内核包。
修:等机上的 apt 跑完;再发现 apt-get upgrade 不装新内核包(要装新包才行),改显式 apt-get install linux-image-cloud-amd64。结果:0 待装,新内核 6.1.0-54 已装,重启后生效——没自动重启,等拍板。
教训:SSH 断只说明通道断了,不说明机上的活停了;先查进程,再下结论。
3. 优选 IP:只筛延迟速度,快的脏 IP 照样爆认证
错:池子只筛延迟和速度,快的脏 IP 被选成优选,上去就爆 Cloudflare 认证(1034)。
修:测速后加一道挑战检测(探针 blog.cloudflare.com,认 challenge 头、403/503、验证页特征)。但又发现探针是 CF 自家域名,测不出 1034;黑名单也永远追不上 CF 的调整。
还没做完的一步:入库前拿自己的域名做一次 WS 101 实测,这才是真正的兜底,还没接进管道。先记下来,不谎称已完成。
4. mihomo 的 DNS:先怪宽带,其实是本机劫持
错:wget 失败,第一反应是宽带 DNS 劫持。
发现:查本机状态才看到,是 mihomo 自己的 fake-IP + TUN 在劫持 DNS。
修:mihomo 卸掉,换 honk + doona 切流,wget 当场就好。
教训:不看本机状态就定责,等于对着想象中的环境治病。先查本机,再说话。
5. 看门狗报警:先复核,再报
错:看门狗一报警就想直接报。3130 断时会误报 2202;VM 重置那一刻的测量本身就是假象(d1、d2 双双掉线那次,三路 400、SSH 通,实际是重置造成的)。
修:报警先亲手复核三路 + SSH,确认是真故障再报;能远程修的先远程修,修不好再报。另一次教训:重启隧道服务会短暂打断走该隧道的 SSH,备用路是经 g1 的 d1-bak。
6. 报时间:UTC 当成本地时间,10 分钟报成 8 小时
错:d1 断线那次,把 UTC 时间看成本地时间,10 分钟左右的断线报成了 8 小时。
修:当场认错,改规矩:报时间必须写明时区。
结尾
这几天的共性:错都出在"没先看一眼就下结论"——没看进程、没看本机、没看时区、没看探针的盲区。修法也同款:先看证据,再动手;动手前先想顺序;宣称完成前先验数字。