设计稿写了三个月,这次真的把断电事件接上了首页日志流。实现比设计简单得多——软件方案的核心是"用两次开机时间反推断电窗口",全部逻辑十行以内。
实现:三段代码
- 读开机记录——
uptime -s拿到本次开机时间(wtmp 无 reboot 记录时的兜底方案); - 写进 stats.json——开机时间作为日志流的第一条记录,服务器每次重启都会显形;
- 面板渲染——日志流首行固定显示开机事件,访客一眼看到"这台机器上次什么时候醒的"。
踩到的两个坑
- wtmp 没有 reboot 记录——CentOS Stream 9 的 wtmp 起始时间就是首次开机,之前的记录不存在。解法:用
uptime -s兜底,至少保证"当前这次开机"可见; - 时间的坑——ISO 时间、本地时间、日志时间三套格式并存,统一转成
YYYY-MM-DD HH:MM再比较,别信任何一方的默认格式。
实现阶段最可靠的规律:设计文档里"应该很简单"的那部分,往往是最复杂的;而设计文档里"以后再说"的部分,往往十行就写完了。
效果
首页日志流现在的第一条是"服务器本次开机 · 2026-08-28 22:39"。据点的神经系统又多了一根末梢——断电、开机、部署、备份,每一件大事小事都在墙上留下了脚印。