systemd-analyze verify 做什么
systemd-analyze 是诊断 systemd 的瑞士军刀,其中 verify 子命令专门校验单元文件:检查语法、可执行路径是否存在、依赖单元是否可用、有没有循环依赖,在把单元放进生产之前跑一遍能挡掉大部分低级错误。同一条命令还提供 calendar(验证 timer 时间表达式)与 security(评估服务沙箱能力面)两个子命令,前者在写定时任务时特别有用。
基本信息
| 适用平台 | systemd 系 Linux:openEuler、麒麟、UOS、RHEL 8/9 |
|---|---|
| 校验单元 | systemd-analyze verify 单元文件路径 |
| 校验时间表达式 | systemd-analyze calendar '表达式' --iterations=N |
| 安全评分 | systemd-analyze security 服务名(较新版本提供) |
| 权限要求 | 读单元文件即可,涉及系统单元建议 root |
典型使用场景
- 新写单元上生产前:先校验语法与路径,避免 reload 后启动失败
- 定时任务验证:用 calendar 确认表达式解释是否与预期一致
- 改动排查:服务莫名其妙不启动时先 verify 看有没有解析错误
- 安全评审:用 security 输出作为加固依据,逐项收紧沙箱选项
- 批量模板落地:同一套单元模板分发到多台机器前统一校验
校验命令
校验命令
systemd-analyze verify /etc/systemd/system/myapp.service # 校验服务单元
systemd-analyze verify /etc/systemd/system/backup.timer # 校验 timer 单元
systemd-analyze calendar 'daily' --iterations=3 # 验证时间表达式
systemd-analyze calendar 'Mon *-*-* 03:00:00' --iterations=3
systemd-analyze security myapp.service # 安全评分与建议(较新版本)
systemd-analyze verify /usr/lib/systemd/system/sshd.service # 校验系统自带单元
systemd-analyze cat-config systemd/system/myapp.service # 打印合并后的最终配置子命令与用途
| 子命令 | 作用 | 输出解读 |
|---|---|---|
| verify | 校验单元语法与依赖 | 报错指出具体行与原因,无输出表示通过 |
| calendar | 解释日历时间表达式 | 输出下次触发时间列表,与预期比对 |
| security | 评估沙箱加固评分 | 数值越高暴露面越大,附逐项建议 |
| cat-config | 打印合并后的配置 | 看多个配置文件叠加后的最终生效值 |
| blame | 启动耗时归因 | 定位启动慢在哪个单元 |
| time | 整体启动时间 | 配合 critical-chain 看关键路径 |
verify 会解析依赖并与系统现有单元对照,能提示语法错误、缺失依赖与循环引用;把这条命令作为单元文件入库前的固定检查项。
security 给出的加固建议按业务评估后再套用:把 ProtectSystem、PrivateTmp 等收紧过度会让服务无法读写其工作目录。