Systemd技术问询:如何查找服务(或单元、目标)的依赖者
在Systemd中查找服务/单元/目标的所有依赖者
嘿,要找出Systemd里某个服务、单元或者目标的依赖者(也就是哪些单元会依赖它才能启动/运行),这几个实用方法你可以直接用:
1. 基础反向依赖查询
最直接的命令是用systemctl list-dependencies加上--reverse参数,它会以树形结构展示所有依赖指定单元的上层单元:
systemctl list-dependencies --reverse <单元名>
比如查postgres服务的依赖者:
systemctl list-dependencies --reverse postgresql.service
2. 查看详细的依赖元数据
如果需要更细致的依赖分类信息,可以用systemctl show命令,过滤出核心依赖属性:
systemctl show --property=RequiresBy,WantsBy,PartOfBy <单元名>
这几个属性的含义:
RequiresBy:必须依赖该单元的单元列表(若此单元停止,依赖它的单元会被强制停止)WantsBy:弱依赖该单元的单元列表(此单元停止,依赖它的单元不会被强制终止)PartOfBy:将该单元作为自身组成部分的单元列表
3. 过滤特定类型的单元
如果只想聚焦某一类单元(比如只看服务,排除目标、套接字等),可以结合systemctl list-units和--reverse参数:
systemctl list-units --type=service --reverse --requires=<单元名>
这里的--type=service可以替换成你需要的类型,比如target、socket等。
4. 查看完整的间接依赖链
如果想看到间接依赖者(也就是依赖「依赖该单元的单元」的上层节点),可以给list-dependencies加上--all参数:
systemctl list-dependencies --reverse --all <单元名>
这个命令会展开所有层级的依赖关系,适合排查复杂的启动依赖问题。
内容的提问来源于stack exchange,提问作者Rolf
相关产品推荐
相关产品推荐

