AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 440103
Accepted
the_velour_fog
the_velour_fog
Asked: 2018-04-26 18:53:40 +0800 CST2018-04-26 18:53:40 +0800 CST 2018-04-26 18:53:40 +0800 CST

systemd 如何在目标“单元”中包含“依赖”目标文件和目录?

  • 772

在我的计算机/lib/systemd/system目录中,我看到一个文件multiuser.target- 该文件包含:

[Unit]
Description=Multi-User System
Documentation=man:systemd.special(7)
Requires=basic.target
Conflicts=rescue.service rescue.target
After=basic.target rescue.service rescue.target
AllowIsolate=yes

该行:Requires: basic.target我认为这意味着“运行”basic.target文件。
但是在同一个 /lib/systemd/system目录中还有一个multi-user.target.wants/子目录。它包含更多的单元文件:

/lib/systemd/system $tree multi-user.target.wants/
multi-user.target.wants/
├── dbus.service -> ../dbus.service
├── getty.target -> ../getty.target
├── systemd-ask-password-wall.path -> ../systemd-ask-password-wall.path
├── systemd-logind.service -> ../systemd-logind.service
├── systemd-update-utmp-runlevel.service -> ../systemd-update-utmp-runlevel.service
└── systemd-user-sessions.service -> ../systemd-user-sessions.service

这些单元中的哪一个,即文件:basic.target或子目录中的所有单元在默认引导目标multi-user.wants.target时运行?multi-user.target以上是全部吗?如果是这样,顺序是什么?

systemd boot
  • 1 1 个回答
  • 1574 Views

1 个回答

  • Voted
  1. Best Answer
    ErikF
    2018-04-26T22:09:18+08:002018-04-26T22:09:18+08:00

    Before/After和Wants/ Requires/之间有区别Requisite:第一组表示单元启动的时间,后一组表示依赖关系。通常,两者之间几乎没有区别,但有时它很重要。阅读文档有助于了解更多详细信息,因为我省略了您不经常看到的内容。

    例如,假设您有一些具有依赖关系的服务:

    a.服务

    [Service]
    Type=oneshot
    ExecStart=/bin/sh -c 'sleep 5;/bin/false'
    RemainAfterExit=yes
    

    b.服务

    [Unit]
    After=a.service
    
    [Service]
    Type=oneshot
    ExecStart=/bin/echo B
    RemainAfterExit=yes
    

    c.服务

    [Unit]
    Requires=a.service
    
    [Service]
    Type=oneshot
    ExecStart=/bin/echo C
    RemainAfterExit=yes
    

    d.服务

    [Unit]
    After=a.service
    Requires=a.service
    
    [Service]
    Type=oneshot
    ExecStart=/bin/echo D
    RemainAfterExit=yes
    

    根据您开始的内容,加载的内容(以及顺序)会发生巨大变化:

    • a:a
    • b:b
    • c(或a+ c):a同时c(c即使a失败也保持运行)
    • d(或a+ d):a-> c(如果a成功启动)
    • a+ b: a-> b(不管是否a启动)

    为什么这么复杂?这是为了加快单元加载。如果服务之间没有Before或After相互引用,那么它们可以同时启动(假设没有其他单元需要它们!)

    .target文件从哪里来?他们将单元放入功能组中,以便在系统启动(或停止等)时,可以一起启动该阶段所需的单元,并且单元可以指示它们要等待另一个阶段启动. 例如,一个单元可以包含After=network.target以确保网络在启动之前有机会进行初始化,即使它是作为multi-user.target.

    如果您想查看单元相互依赖的顺序,您可以运行systemctl list-dependencies(但它不会告诉您它们加载的顺序,因为这在Before/After设置之外有点随机。)

    • 2

相关问题

  • 系统完好,grub坏了

  • 使用 systemd 看门狗支持重新启动应用程序

  • “pacman -Syu”“可能”破坏了我的系统,因为未安装引导

  • 克隆的 SSD 无法启动并打印奇怪的线条

  • 使用键盘快捷键启动/停止 systemd 服务 [关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve