systemctl本身不提供系统健康评分,但可通过list-units --state=failed查异常服务、is-active验关键服务运行态、list-unit-files --state=enabled核开机自启配置、journalctl查错误日志,综合判断服务层稳定性。

systemctl 本身不直接提供“整个系统健康状态”的综合评分或仪表盘,但它是一套服务生命周期管理的核心工具。要评估系统健康,关键不是运行一个命令,而是用 systemctl 配合几个关键操作,快速定位服务层是否稳定——这是系统可用性的第一道防线。
查所有异常服务(最优先)
服务崩溃或启动失败是系统失稳的常见信号。执行:
- systemctl list-units --type=service --state=failed --no-pager —— 只列出明确失败的服务,结果为空才说明服务层无硬故障
- 若返回内容,逐个运行 systemctl status 服务名,重点看 Active 行(failed / inactive)、Loaded 行(是否 not-found 或 masked)、以及末尾最近几行日志
- 常见失败原因:磁盘满(journalctl -u 服务名 里出现 “No space left on device”)、端口被占、配置语法错误、依赖服务未就绪
确认关键服务是否真正在跑
别只信进程存在,要信 systemd 的状态判断:
- 对 sshd、nginx、cron、dbus 等基础服务,运行 systemctl is-active 服务名,预期输出必须是 active
- 如果返回 inactive,不代表没装,可能是没 start;返回 failed 就需立即排查
- 注意:ps aux | grep xxx 可能显示进程还在,但 systemd 已标记为 failed —— 这种“僵尸状态”必须以 systemctl status 为准
检查开机自启配置是否合理
服务当前运行 ≠ 开机后能自动恢复。这关系到系统重启后的稳定性:
- systemctl list-unit-files --type=service --state=enabled —— 查看哪些服务设为开机自启,确认关键服务在列,非必要服务(如 bluetooth、avahi)不在列
- systemctl list-unit-files --type=service --state=disabled —— 检查是否有本该启用却禁用的服务(比如你刚装完 nginx 却忘了 enable)
- 注意:enabled/disabled 是“启动策略”,和 active/inactive(当前运行态)完全独立,两者都要关注
翻最近服务级错误日志
systemctl 不做全局健康打分,但它的日志是诊断入口:
- journalctl --since "1 hour ago" -p err..alert --no-pager —— 查过去一小时所有 error 及以上级别系统级报错,过滤出真实问题线索
- 若看到大量 unit start-limit-hit,说明某服务反复崩溃被 systemd 拦截,需重点查对应服务的 status 和完整日志:journalctl -u 服务名 -n 50
- 搭配 systemctl status --no-pager 服务名,把 Loaded 路径(如 /lib/systemd/system/nginx.service)复制出来,用 cat 查原始配置,确认 ExecStart、User、Permissions 是否合规


















