Appearance
systemd failed units 与 reboot-required:服务器状态不干净时怎么看
这个主题来自一次真实巡检:OpenClaw 和 Nginx 都正常工作,但系统同时出现了 systemctl --failed 里的 failed units,以及 /var/run/reboot-required 提示。它不是“网站立刻坏了”,而是说明服务器进入了需要维护的状态。
如果只记一句话:
服务是否在线,只说明当前请求能不能处理;failed units 和 reboot-required 说明这台机器的系统状态是否干净、是否需要安排维护窗口。
1. systemd 是什么
现代 Linux 服务器上,大部分后台服务都由 systemd 管理,例如:
- SSH
- Docker
- Nginx
- OpenClaw Gateway 的用户服务
- 网络初始化任务
- 定时任务和 timer
systemd 不只负责“启动服务”,还会记录服务是否启动成功、是否崩溃、是否启用开机自启。
因此,日常巡检不能只看网页能不能打开,还要看 systemd 眼里的系统状态。
2. failed units 代表什么
systemctl --failed 会列出当前处于 failed 状态的 units。
failed 不一定等于业务不可用。常见情况有:
- 某个非关键服务启动失败
- 启动阶段等待网络超时
- 某个硬件/固件更新服务失败
- 某个服务曾经失败,但主业务已经绕过它继续运行
例如巡检里出现的:
fwupd-refresh.servicesystemd-networkd-wait-online.service
这类问题通常不是立刻中断业务的故障,但它们会污染系统状态。长期不看,会导致真正故障出现时你分不清哪些是旧问题,哪些是新问题。
3. reboot-required 代表什么
Ubuntu/Debian 系统在安装某些关键更新后,会写入:
text
/var/run/reboot-required
/var/run/reboot-required.pkgs它表示:
有些更新已经安装到磁盘上,但当前运行中的内核或核心库还没切换到新版本。
常见触发项包括:
- Linux kernel
systemdlibc6dbus- 低层系统库
这次巡检就是这种情况:系统提示新内核和核心包需要重启后生效。
4. 为什么不是更新完就万事大吉
Linux 更新分两层:
- 包文件更新到磁盘
- 正在运行的进程切换到新版本
很多普通软件更新后,重启服务就够了。
但内核、系统库、systemd 这类底层组件,通常需要整机重启。
如果不重启:
- 漏洞补丁可能没有真正应用到当前运行内核
- 系统显示已安装新版本,但实际仍跑旧版本
- 后续排障时版本判断会混乱
- 下次不可控重启时,才暴露启动问题
所以 reboot-required 不是紧急报警,但它应该进入维护计划。
5. 什么时候应该重启 VPS
个人 VPS 不建议一看到提示就立刻重启,尤其机器上跑着 OpenClaw、Nginx、Docker、自动化任务。
更稳的做法是:
- 确认 SSH 仍可用
- 确认关键服务有开机自启
- 确认没有正在进行的重要任务
- 安排一个可接受的维护窗口
- 重启后立刻复查
重启后重点检查:
- SSH 是否还能连
- OpenClaw Gateway 是否恢复
- Nginx / Docker 是否恢复
- 80/443 端口是否正常
systemctl --failed是否清理/var/run/reboot-required是否消失
6. 自动更新和自动重启的取舍
服务器安全更新可以自动化,但自动重启要谨慎。
自动安全更新的优点
- 减少漏补安全漏洞
- 降低维护负担
- 对个人 VPS 很实用
自动重启的风险
- 服务没有正确开机自启会直接下线
- 重启后 SSH 或网络异常会造成远程不可达
- 半夜自动重启可能影响正在运行的任务
- 如果没有 VNC/控制台兜底,恢复成本更高
所以更推荐:
text
自动安装安全更新,但重启由你或维护流程确认后执行。7. 和当前服务器的关系
这台 VPS 现在承担了:
- OpenClaw Gateway
- 飞书入口
- Gmail monitor
- Nginx + tech-kb
- Uptime Kuma / Dozzle 等本地服务
这意味着它不是一次性测试机,而是逐渐变成个人基础设施节点。
对这种机器,巡检重点不是“有没有报错”这么简单,而是判断它是否处于可维护状态:
text
服务在线 + 系统状态干净 + 更新策略明确 + 重启路径可控如果系统长期处于 reboot-required 状态,短期也许没事,但安全和可恢复性会变差。
推荐阅读
DigitalOcean:How To Use systemctl to Manage Systemd Services and Units
推荐原因:系统性解释 service、unit、status、restart、enable,适合建立 systemd 的基础模型。
nixCraft:Systemd systemctl list all failed units/services on Linux
https://www.cyberciti.biz/faq/systemd-systemctl-list-all-failed-units-services-on-linux/
推荐原因:短平快,适合当作查看 failed units 的操作备忘。
Linux Audit:Using unattended-upgrades on Debian and Ubuntu
https://linux-audit.com/using-unattended-upgrades-on-debian-and-ubuntu/
推荐原因:解释自动安全更新、日志位置,以及 /var/run/reboot-required 的作用。
Linux Audit:Troubleshooting a failed systemd unit
https://linux-audit.com/systemd/troubleshooting-a-failed-systemd-unit/
推荐原因:适合以后遇到某个服务启动失败时,按排错思路查 journal、unit 配置和依赖关系。