Linux 服务启动顺序配置实战-linux运维

systemd服务启动顺序依赖需用After=与Wants=/Requires=组合:After=仅表时序,Wants=为弱依赖,Requires=为强依赖;避免循环依赖;验证须用systemd-analyze critical-chain等命令查真实链路,而非仅看配置。

systemd 服务启动顺序依赖怎么写

Linux 现在基本都用 systemd,控制启动顺序靠的是依赖关系,不是传统 SysV 的数字编号。写错依赖会导致服务起不来,或者起得太早——比如数据库还没监听,Web 服务就去连它,报 Connection refused。

关键不是“谁先谁后”,而是“谁等谁”。用 After= 和 Wants=(或 Requires=)组合才有效:

  • After=network.target 只表示时间先后,不保证网络已就绪;真要等网卡配好,得加 Wants=network-online.target + After=network-online.target
  • Requires=redis.service 表示强依赖:如果 redis.service 启动失败,本服务直接 abort,不会尝试启动
  • Wants=redis.service 是弱依赖:redis.service 启动失败不影响本服务继续,但本服务仍会在它之后启动(配合 After=)
  • 避免循环依赖:A Wants=B + After=B 和 B Wants=A + After=A 会让 systemd 拒绝加载单元文件,报错 Unit A has a dependency cycle with B

如何验证服务实际启动顺序

光看配置不顶用,得查真实执行流。最直接的方式是看启动时序图:

systemd-analyze plot > boot.svg

打开 boot.svg 就能看到所有服务横向排布、启动/结束时间轴。但更常用的是过滤关键服务:

  • systemd-analyze blame 查耗时最长的服务(常暴露隐性阻塞)
  • systemd-analyze critical-chain myapp.service 显示从 default.target 到 myapp.service 的完整依赖链,每一步是否成功、耗时多少一目了然
  • journalctl -u myapp.service -u postgresql.service --since "1 hour ago" 对比日志时间戳,确认 PostgreSQL 是否真在 myapp.service 启动前 ready

注意:systemd-analyze 默认只分析上次 boot,重启后数据刷新,别拿旧结果当依据。

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » Linux 服务启动顺序配置实战-linux运维
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1391+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 3999504+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1391+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 3999505+
  • 本周更新: 0+
  • 最后更新: 2026-03-16