Linux启动服务顺序怎么看_systemd依赖关系说明【教学】

发布时间 - 2025-12-17 00:00:00    点击率:
Linux服务启动顺序由依赖关系决定,而非书写顺序;通过Wants/Requires声明“想要”或“必须”依赖,After/Before控制实际执行先后;target划分启动阶段,调试可用systemd-analyze和journalctl。

Linux用systemd启动时,服务顺序不是靠“先写先启”,而是由依赖关系决定的。看启动顺序,本质是理清服务之间的WantsRequiresAfterBefore这些依赖声明。

查单个服务的依赖图

systemctl list-dependencies命令能直观看到服务依赖树:

  • systemctl list-dependencies sshd.service —— 查sshd依赖哪些单元(默认只显示正向依赖)
  • systemctl list-dependencies --reverse sshd.service —— 查哪些服务依赖sshd(即sshd被谁“Wants”或“Requires”)
  • systemctl list-dependencies --all sshd.service —— 显示完整依赖图(含间接依赖,输出较长)

看服务实际启动先后顺序

依赖关系不等于执行顺序,After=Before=才真正影响排序。要确认某个服务到底在哪个阶段启动:

  • systemctl show -p After,Before,Wants,Requires sshd.service —— 直接查看关键依赖字段值
  • systemctl cat sshd.service | grep -E "(After|Before|Wants|Requires)=" —— 查看unit文件中显式声明的依赖
  • 注意:Wants=network.target表示“希望network.target就绪”,但不强制等待;而After=network.target才表示“必须在网络.target启动完成之后再启动”

理解target与启动阶段划分

systemd用target模拟传统运行级别,不同target代表系统就绪的不同阶段:

  • sysinit.target:基础系统初始化(udev、mount、swap等)
  • basic.target:基础服务就绪(日志、定时器、dbus等)
  • multi-user.target:多用户命令行环境(网络、ssh、数据库等通常在此阶段激活)
  • graphical.target:图形界面(依赖multi-user.target)
  • 服务通过WantedBy=multi-user.target等方式绑定到target,从而进入对应启动批次

调试启动卡顿或顺序异常

如果某服务没按预期启动,或系统启动慢,可这样排查:

  • systemd-analyze plot > boot.svg —— 生成可视化的启动时间轴(需用浏览器打开svg)
  • systemd-analyze critical-chain sshd.service —— 查sshd及其上游依赖链耗时,定位瓶颈
  • journalctl -b -u sshd.service —— 看该服务本次启动的日志,确认是否因依赖未就绪而延迟启动
  • 常见陷阱:自定义服务忘了加After=network-online.target却用了网络地址,结果因网络未就绪而失败重试

依赖关系写在unit文件里,修改后记得systemctl daemon-reload重新加载配置。理清WantsAfter的区别,比死记启动顺序更管用。


# linux  # svg  # 浏览器  # ai  # 区别  # asic  # 数据库  # ssh  # 在此  # 是由  # 用了  # 自定义  # 只显示  # 而非  # 但不  # 写在  # 较长  # 不等于 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: java获取注册ip实例  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  如何在IIS中新建站点并解决端口绑定冲突?  浅析上传头像示例及其注意事项  Laravel如何构建RESTful API_Laravel标准化API接口开发指南  如何快速生成专业多端适配建站电话?  晋江文学城电脑版官网 晋江文学城网页版直接进入  创业网站制作流程,创业网站可靠吗?  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  EditPlus 正则表达式 实战(3)  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  如何在Windows 2008云服务器安全搭建网站?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  JavaScript如何实现继承_有哪些常用方法  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  Java垃圾回收器的方法和原理总结  JavaScript如何实现音频处理_Web Audio API如何工作?  🚀拖拽式CMS建站能否实现高效与个性化并存?  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  中国移动官方网站首页入口 中国移动官网网页登录  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  Python文本处理实践_日志清洗解析【指导】  网站建设保证美观性,需要考虑的几点问题!  lovemo网页版地址 lovemo官网手机登录  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  BootStrap整体框架之基础布局组件  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  简历在线制作网站免费版,如何创建个人简历?  Laravel集合Collection怎么用_Laravel集合常用函数详解  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  如何在香港服务器上快速搭建免备案网站?  Laravel如何创建自定义Artisan命令?(代码示例)  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  装修招标网站设计制作流程,装修招标流程?  bootstrap日历插件datetimepicker使用方法  Laravel中的withCount方法怎么高效统计关联模型数量  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  成都网站制作公司哪家好,四川省职工服务网是做什么用?  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  音乐网站服务器如何优化API响应速度?  清除minerd进程的简单方法