0

0

如何在Linux中查看服务依赖 Linux systemctl list-dependencies

P粉602998670

P粉602998670

发布时间:2025-08-19 10:03:01

|

512人浏览过

|

来源于php中文网

原创

使用systemctl list-dependencies可查看服务依赖,如systemctl list-dependencies nginx.service显示其依赖的Wants、Requires和After关系,帮助排查启动问题、优化配置,并通过--reverse、--all等参数深入分析正向与反向依赖,理解Systemd中Wants、Requires、After等定义的启动顺序与依赖逻辑。

如何在linux中查看服务依赖 linux systemctl list-dependencies

在Linux系统中,要查看服务的依赖关系,最直接且有效的方法就是使用

systemctl list-dependencies
命令。这个命令能帮你清晰地梳理出某个服务在启动时需要哪些前置条件,以及它又会影响到哪些其他服务,这对于系统管理员进行故障排查、理解系统启动流程或者优化服务配置来说,简直是必备的工具

解决方案

要查看特定服务的依赖,你只需要在终端中输入

systemctl list-dependencies [服务名]
。例如,如果你想了解
nginx.service
的依赖关系,可以这样操作:

systemctl list-dependencies nginx.service

这个命令会以树状结构展示

nginx.service
所“想要”(Wants)、“需要”(Requires)、“在此之后”(After)启动的服务或目标(target)。通常,你会看到它依赖于网络、系统日志等基础服务,以及一些特定的目标,比如
multi-user.target

如果你想查看某个目标(比如

multi-user.target
,它代表了多用户命令行界面)所包含的所有服务和依赖,也可以用同样的方式:

systemctl list-dependencies multi-user.target

这会列出该目标下所有被“拉起”的服务,让你对系统在特定运行级别下会启动哪些东西有个全面的认识。

为什么理解服务依赖如此重要?

理解Linux服务之间的依赖关系,对于任何系统管理员或开发者来说,都是一项核心技能。我个人在排查一些诡异的服务启动问题时,几乎都会先从依赖关系入手。很多时候,一个服务跑不起来,不是它本身配置有问题,而是它依赖的某个组件没到位,或者启动顺序不对。

想象一下,你有一个数据库服务(比如

postgresql.service
),它需要网络连接和特定的存储挂载点才能正常启动。如果你在Systemd单元文件中没有正确定义这些依赖,或者网络服务启动失败了,那么数据库服务自然也无法启动。这时候,仅仅查看数据库服务的日志可能并不能直接告诉你“网络没起来”这个根本原因。通过
list-dependencies
,你可以看到
postgresql.service
明确地“想要”或“需要”
network.target
network-online.target
。一旦发现这些前置依赖没有满足,排查方向就清晰多了。

此外,在系统启动过程中,服务依赖关系决定了它们的启动顺序。理解这些,能帮助我们优化启动时间,避免不必要的等待,或者在规划系统维护时,预估停机和启动的流程。它就像一张复杂的地铁线路图,让你清楚知道从A点到B点需要经过哪些换乘站,以及哪些线路是必经之路。

北极象沉浸式AI翻译
北极象沉浸式AI翻译

免费的北极象沉浸式AI翻译 - 带您走进沉浸式AI的双语对照体验

下载

systemctl list-dependencies
命令的进阶用法有哪些?

systemctl list-dependencies
远不止查看正向依赖那么简单,它还有一些非常实用的参数,能帮助我们进行更深入的分析。

  • 查看反向依赖:
    --reverse
    这个参数可以让你看到哪些服务“依赖于”你指定的那个服务。有一次,我需要停掉一个核心服务进行维护,但又不确定会不会影响到其他业务。这时候,
    --reverse
    参数简直是救命稻草。
    systemctl list-dependencies --reverse nginx.service

    这会列出所有将

    nginx.service
    列为
    Wants
    Requires
    After
    等依赖的服务。

  • 显示所有依赖(包括不活跃的):
    --all
    默认情况下,
    list-dependencies
    可能只会显示活跃的或已加载的依赖。加上
    --all
    参数,它会显示所有定义在单元文件中的依赖关系,即使它们当前没有运行。
    systemctl list-dependencies --all nginx.service
  • 递归显示依赖:
    --recursive
    虽然
    list-dependencies
    默认就以递归方式显示树状结构,但显式使用
    --recursive
    可以确保这一点,尤其是在结合其他参数时。
  • 按类型过滤:
    --type=[类型]
    如果你只关心某个特定类型的依赖,比如只看服务(
    service
    )或目标(
    target
    ),可以使用
    --type
    systemctl list-dependencies --type=service multi-user.target
  • 简化输出:
    --plain
    如果你不想要漂亮的树状结构,只想要一个简单的列表,
    --plain
    会很有用,方便脚本处理。
    systemctl list-dependencies --plain nginx.service

    这些进阶用法让

    list-dependencies
    成为了一个多功能的诊断工具,能够适应各种复杂的系统排查场景。

依赖关系是如何在Systemd单元文件中定义的?

要真正理解

systemctl list-dependencies
输出的含义,就必须了解Systemd单元文件(通常是
.service
,
.target
等文件)中是如何定义这些依赖的。这些定义通常出现在单元文件的
[Unit]
部分。我记得刚开始接触Systemd时,光是
Wants
Requires
就把我搞得一头雾水,后来才明白它们在服务启动逻辑中的微妙差异。

以下是一些关键的依赖定义:

  • Wants=
    : 这是一种“弱”依赖。它表示当前服务“想要”启动列出的服务。如果被列出的服务不存在或启动失败,当前服务仍然会尝试启动。这通常用于可选的、非关键的依赖。
  • Requires=
    : 这是一种“强”依赖。它表示当前服务“需要”列出的服务。如果被列出的服务不存在或启动失败,当前服务也将无法启动。这是定义关键依赖的首选。
  • After=
    : 这定义了服务的启动顺序。表示当前服务必须在列出的服务之后启动。这仅仅是顺序关系,并不意味着依赖。例如,一个Web服务器可能
    After=network-online.target
    ,确保网络就绪后再启动。
  • Before=
    : 与
    After=
    相反,表示当前服务必须在列出的服务之前启动。
  • Conflicts=
    : 表示当前服务与列出的服务是互斥的,它们不能同时运行。如果其中一个启动,另一个就会被停止。
  • PartOf=
    : 这是一个分组机制,表示当前服务是某个更大服务或目标的一部分。当父服务被停止或重启时,子服务也会受到影响。

举个简单的例子,一个

mywebserver.service
文件可能包含:

[Unit]
Description=My Custom Web Server
Wants=network-online.target
Requires=mariadb.service
After=network-online.target mariadb.service

[Service]
ExecStart=/usr/local/bin/mywebserver
...

这里,

mywebserver.service
Wants
网络在线,
Requires
MariaDB数据库服务,并且它会在网络和MariaDB都启动之后再启动。深入理解这些定义,才能真正做到“知其然,知其所以然”,进而精准地管理和排查Systemd服务。你也可以使用
systemctl show [service_name]
命令来查看一个服务单元的所有属性,包括其定义的依赖关系。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

229

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

498

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

498

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

227

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

333

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3508

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

15

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

19

2026.01.13

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

3

2026.01.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.4万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号