Manpages

NAME

systemd, init - systemd 系 统 与 服 务 管 理 器

SYNOPSIS

systemd [OPTIONS...]

init [OPTIONS...] {COMMAND}

描 述

systemd 是 一 个 专 用 于 Linux 操 作 系 统 的 系 统 与 服 务 管 理 器 。 当 作 为 启 动 进 程 (PID=1)运 行 时 , 它 将 作 为 初 始 化 系 统 运 行 , 也 就 是 启 动 并 维 护 各 种 用 户 空 间 的 服 务 。 为 了 与 传 统 的 SysV 兼 容 , 如 果 将 systemd 以 init 名 称 启 动 , 并 且 "PID≠1", 那 么 它 将 执 行 telinit 命 令 并 将 所 有 命 令 行 参 数 原 封 不 动 的 传 递 过 去 。 这 样 对 于 普 通 的 登 陆 会 话 来 说 , 无 论 是 调 用 init 还 是 调 用 telinit 都 是 等 价 的 。 详 见 telinit(8) 手 册 。 当 作 为 系 统 实 例 运 行 时 , systemd 将 会 按 照 system.conf 配 置 文 件 以 及 system.conf.d 配 置 目 录 中 的 指 令 工 作 ; 当 作 为 用 户 实 例 运 行 时 , systemd 将 会 按 照 user.conf 配 置 文 件 以 及 user.conf.d 配 置 目 录 中 的 指 令 工 作 。 详 见 systemd-system.conf(5) 手 册 。

选 项

能 够 识 别 的 命 令 行 选 项 如 下 :

--test 检 测 并 输 出 启 动 序 列 , 然 后 退 出 。 仅 用 于 调 试 目 的 。

--dump-configuration-items 输 出 一 个 单 元 (unit)列 表 。 此 列 表 简 明 且 完 整 的 列 出 了 所 有 单 元 文 件 中 定 义 的 "unit"。

--unit= 设 置 启 动 时 默 认 启 动 的 单 元 (unit)。 默 认 值 是 default.target

--system, --user

--system 表 示 强 制 作 为 系 统 实 例 运 行 (即 使 "PID≠1"), --user 表 示 强 制 作 为 用 户 实 例 运 行 (即 使 "PID=1")。 通 常 不 应 该 使 用 此 选 项 。 此 选 项 仅 用 于 调 试 目 的 , 而 且 --system 仅 在 与 --test 一 起 使 用 时 才 有 实 际 意 义 。

--dump-core 在 崩 溃 时 进 行 内 核 转 储 。 当 作 为 用 户 实 例 运 行 时 , 此 选 项 没 有 实 际 意 义 。 此 选 项 还 可 以 通 过 内 核 引 导 选 项 systemd.dump_core= 开 启 (参 见 "内 核 引 导 选 项 "小 节 )。

--crash-vt=VT 在 崩 溃 时 切 换 到 指 定 的 虚 拟 控 制 台 (VT)。 当 作 为 用 户 实 例 运 行 时 , 此 选 项 没 有 实 际 意 义 。 可 以 设 为 一 个 1–63 之 间 的 整 数 或 布 尔 值 。 若 设 为 整 数 则 切 换 到 指 定 编 号 的 虚 拟 控 制 台 ; 若 设 为 yes 则 表 示 使 用 内 核 消 息 所 使 用 的 虚 拟 控 制 台 ; 若 设 为 no 则 表 示 不 切 换 到 任 何 虚 拟 控 制 台 。 此 选 项 还 可 以 通 过 内 核 引 导 选 项 systemd.crash_vt= 设 置 (参 见 "内 核 引 导 选 项 "小 节 )。

--crash-shell 在 崩 溃 时 启 动 一 个 shell 。 当 作 为 用 户 实 例 运 行 时 , 此 选 项 没 有 实 际 意 义 。 此 选 项 还 可 以 通 过 内 核 引 导 选 项 systemd.crash_shell= 开 启 (参 见 "内 核 引 导 选 项 "小 节 )。

--crash-reboot 在 崩 溃 时 自 动 重 启 系 统 。 当 作 为 用 户 实 例 运 行 时 , 此 选 项 没 有 实 际 意 义 。 此 选 项 还 可 以 通 过 内 核 引 导 选 项 systemd.crash_reboot= 开 启 (参 见 "内 核 引 导 选 项 "小 节 )。

--confirm-spawn 在 派 生 新 进 程 时 进 行 确 认 提 示 。 当 作 为 用 户 实 例 运 行 时 , 此 选 项 没 有 实 际 意 义 。

--show-status= 在 系 统 启 动 过 程 中 显 示 简 明 的 服 务 状 态 信 息 。 当 作 为 用 户 实 例 运 行 时 , 此 选 项 没 有 实 际 意 义 。 其 参 数 必 须 是 一 个 表 示 真 假 的 布 尔 值 , 如 果 未 指 定 则 相 当 于 设 为 yes

--log-target= 设 置 日 志 的 目 标 , 其 参 数 必 须 是 console, journal, kmsg, journal-or-kmsg, null 之 一 (小 写 )。

--log-level= 设 置 日 志 的 等 级 , 其 参 数 必 须 是 一 个 数 字 或 者 符 合 syslog(3) 习 惯 的 emerg, alert, crit, err, warning, notice, info, debug 之 一 (小 写 )。

--log-color= 高 亮 重 要 的 日 志 信 息 , 其 参 数 必 须 是 一 个 表 示 真 假 的 布 尔 值 , 若 未 指 定 则 相 当 于 设 为 yes

--log-location= 在 日 志 中 包 含 代 码 的 位 置 , 其 参 数 必 须 是 一 个 表 示 真 假 的 布 尔 值 , 若 未 指 定 则 相 当 于 设 为 yes 。 仅 用 于 调 试 目 的 。

--default-standard-output=, --default-standard-error= 为 所 有 的 service 与 socket 设 置 默 认 的 标 准 输 出 与 标 准 错 误 , 相 当 于 设 置 StandardOutput=StandardError= 指 令 的 值 (参 见 systemd.exec(5) 手 册 )。 其 参 数 必 须 是 inherit, null, tty, journal, journal+console, syslog, syslog+console, kmsg, kmsg+console 之 一 (小 写 )。 --default-standard-output= 的 默 认 值 是 journal ; 而 --default-standard-error= 的 默 认 值 是 inherit

--machine-id= 覆 盖 文 件 系 统 上 的 machine-id 设 置 , 常 用 于 网 络 启 动 或 容 器 。 禁 止 设 为 全 零 的 值 。

-h, --help 显 示 简 短 的 帮 助 信 息 并 退 出 。

--version 显 示 简 短 的 版 本 信 息 并 退 出 。

概 念

systemd 将 各 种 系 统 启 动 和 运 行 相 关 的 对 象 , 表 示 为 各 种 不 同 类 型 的 单 元 (unit), 并 提 供 了 处 理 不 同 单 元 之 间 依 赖 关 系 的 能 力 。 大 部 分 单 元 都 静 态 的 定 义 在 单 元 文 件 中 (参 见 systemd.unit(5) 手 册 ), 但 是 有 少 部 分 单 元 则 是 动 态 自 动 生 成 的 : 其 中 一 部 分 来 自 于 其 他 传 统 的 配 置 文 件 (为 了 兼 容 性 ), 而 另 一 部 分 则 动 态 的 来 自 于 系 统 状 态 或 可 编 程 的 运 行 时 状 态 。 单 元 既 可 以 处 于 活 动 (active)状 态 也 可 以 处 于 停 止 (inactive)状 态 , 当 然 也 可 以 处 于 启 动 中 (activating)或 停 止 中 (deactivating)的 状 态 。 还 有 一 个 特 殊 的 失 败 (failed)状 态 , 意 思 是 单 元 以 某 种 方 式 失 败 了 (进 程 崩 溃 了 、 或 者 触 碰 启 动 频 率 限 制 、 或 者 退 出 时 返 回 了 错 误 代 码 、 或 者 遇 到 了 操 作 超 时 之 类 的 故 障 )。 当 进 入 失 败 (failed)状 态 时 , 导 致 故 障 的 原 因 将 被 记 录 到 日 志 中 以 方 便 日 后 排 查 。 需 要 注 意 的 是 , 不 同 的 单 元 可 能 还 会 有 各 自 不 同 的 "子 状 态 ", 但 它 们 都 被 映 射 到 上 述 五 种 状 态 之 一 。 各 种 不 同 的 单 元 类 型 如 下 :

1. service 单 元 。 用 于 封 装 一 个 后 台 服 务 进 程 。 参 见 systemd.service(5) 手 册 。

2. socket 单 元 。 用 于 封 装 一 个 系 统 套 接 字 (UNIX)或 互 联 网 套 接 字 (INET/INET6)或 FIFO管 道 。 相 应 的 服 务 在 第 一 个 "连 接 "进 入 套 接 字 时 才 会 被 启 动 。 有 关 套 接 字 单 元 的 详 情 , 参 见 systemd.socket(5) 手 册 ; 有 关 基 于 套 接 字 或 其 他 方 式 的 启 动 , 参 见 daemon(7) 手 册 。

3. target 单 元 。 用 于 将 多 个 单 元 在 逻 辑 上 组 合 在 一 起 。 参 见 systemd.target(5) 手 册 。

4. device 单 元 。 用 于 封 装 一 个 设 备 文 件 , 可 用 于 基 于 设 备 的 启 动 。 并 非 每 一 个 设 备 文 件 都 需 要 一 个 device 单 元 , 但 是 每 一 个 被 udev 规 则 标 记 的 设 备 都 必 须 作 为 一 个 device 单 元 出 现 。 参 见 systemd.device(5) 手 册 。

5. mount 单 元 。 用 于 封 装 一 个 文 件 系 统 挂 载 点 (也 向 后 兼 容 传 统 的 /etc/fstab 文 件 )。 参 见 systemd.mount(5) 手 册 。

6. automount 单 元 。 用 于 封 装 一 个 文 件 系 统 自 动 挂 载 点 , 也 就 是 仅 在 挂 载 点 确 实 被 访 问 的 情 况 下 才 进 行 挂 载 。 它 取 代 了 传 统 的 autofs 服 务 。 参 见 systemd.automount(5) 手 册 。

7. timer 单 元 。 用 于 封 装 一 个 基 于 时 间 触 发 的 动 作 。 它 取 代 了 传 统 的 atd, crond 等 任 务 计 划 服 务 。 参 见 systemd.timer(5) 手 册 。

8. swap 单 元 。 用 于 封 装 一 个 交 换 分 区 或 者 交 换 文 件 。 它 与 mount 单 元 非 常 类 似 。 参 见 systemd.swap(5) 手 册 。

9. path 单 元 。 用 于 根 据 文 件 系 统 上 特 定 对 象 的 变 化 来 启 动 其 他 服 务 。 参 见 systemd.path(5) 手 册 。

10. slice 单 元 。 用 于 控 制 特 定 CGroup 内 (例 如 一 组 service 与 scope 单 元 )所 有 进 程 的 总 体 资 源 占 用 。 参 见 systemd.slice(5) 手 册 。

11. scope 单 元 。 它 与 service 单 元 类 似 , 但 是 由 systemd 根 据 D-bus 接 口 接 收 到 的 信 息 自 动 创 建 , 可 用 于 管 理 外 部 创 建 的 进 程 。 参 见 systemd.scope(5) 手 册 。 单 元 的 名 称 由 单 元 文 件 的 名 称 决 定 , 某 些 特 定 的 单 元 名 称 具 有 特 殊 的 含 义 , 详 情 参 见 systemd.special(7) 手 册 。

systemd 能 够 处 理 各 种 类 型 的 依 赖 关 系 , 包 括 依 赖 与 冲 突 (也 就 是 Requires=Conflicts= 指 令 ), 以 及 先 后 顺 序 (也 就 是 After=Before= 指 令 )。 注 意 , 上 述 两 种 类 型 的 依 赖 关 系 (依 赖 与 冲 突 、 先 后 顺 序 )之 间 是 相 互 独 立 的 (无 关 的 )。 举 例 来 说 , 假 定 foo.service 依 赖 于 (Requires) bar.service 但 并 未 指 定 先 后 顺 序 , 那 么 这 两 个 服 务 将 被 同 时 并 行 启 动 。 不 过 在 两 个 单 元 之 间 既 存 在 依 赖 关 系 也 存 在 先 后 顺 序 的 情 形 也 很 常 见 。 另 外 需 要 注 意 的 是 , 大 多 数 依 赖 关 系 都 是 由 systemd 隐 式 创 建 和 维 护 的 , 因 此 没 有 必 要 额 外 手 动 创 建 它 们 。 应 用 程 序 和 单 元 (透 过 依 赖 关 系 )可 能 会 查 询 其 他 单 元 的 状 态 变 化 。 在 systemd 中 , 这 种 查 询 被 包 装 为 "任 务 "(job)并 被 作 为 "任 务 队 列 "进 行 管 理 。 任 务 的 执 行 结 果 可 能 成 功 也 可 能 失 败 , 但 是 任 务 的 执 行 顺 序 是 依 照 任 务 所 属 单 元 之 间 的 先 后 顺 序 确 定 的 。 在 系 统 启 动 时 , systemd 默 认 启 动 default.target 单 元 , 该 单 元 中 应 该 包 含 所 有 你 想 在 开 机 时 默 认 启 动 的 单 元 。 但 实 际 上 , 它 通 常 只 是 一 个 指 向 graphical.target (图 形 界 面 ) 或 multi-user.target (命 令 行 界 面 , 常 用 于 嵌 入 式 或 服 务 器 环 境 , 一 般 是 graphical.target 的 一 个 子 集 )的 符 号 连 接 。 详 见 systemd.special(7) 手 册 。

systemd 依 赖 于 内 核 提 供 的 cgroups [1] 特 性 控 制 进 程 的 派 生 , 从 而 确 保 可 以 追 踪 到 所 有 子 进 程 。 cgroups 信 息 由 内 核 负 责 维 护 , 并 且 可 以 通 过 /sys/fs/cgroup/systemd/ 接 口 进 行 访 问 。 此 外 , 还 可 以 通 过 systemd-cgls(1)ps(1) 之 类 的 工 具 进 行 查 看 (ps xawf -eo pid,user,cgroup,args)

systemd 几 乎 完 全 兼 容 传 统 的 SysV init 系 统 : SysV init 脚 本 可 以 作 为 另 一 种 配 置 文 件 格 式 被 识 别 ; 提 供 与 SysV 兼 容 的 /dev/initctl 接 口 ; 提 供 各 种 SysV 工 具 的 兼 容 实 现 ; 依 然 兼 容 例 如 /etc/fstab 或 者 utmp 之 类 传 统 的 Unix 特 性 。

systemd 还 有 一 个 小 型 的 事 务 系 统 : 如 果 要 启 动 或 关 闭 一 个 单 元 , 那 么 该 单 元 所 依 赖 的 所 有 其 他 单 元 都 会 被 一 起 加 入 到 同 一 个 临 时 事 务 中 。 这 样 , 就 可 以 校 验 整 个 事 务 的 一 致 性 , 也 就 是 检 查 是 否 存 在 循 环 依 赖 。 如 果 存 在 循 环 依 赖 , 那 么 systemd 将 会 尝 试 通 过 去 掉 弱 依 赖 (want)来 解 决 这 个 问 题 , 如 果 最 终 实 在 无 法 解 决 循 环 依 赖 的 问 题 , 那 么 systemd 将 会 报 错 。

systemd 内 置 了 许 多 系 统 启 动 过 程 中 必 需 的 操 作 , 例 如 , 设 置 hostname 以 及 配 置 loopback 网 络 设 备 , 以 及 挂 载 /sys 和 /proc 文 件 系 统 。 在 系 统 启 动 或 者 执 行 systemctl reload ... 时 , systemd 可 以 根 据 其 他 配 置 文 件 或 者 内 核 引 导 选 项 动 态 生 成 单 元 , 参 见 systemd.generator(7) 手 册 。 如 果 要 从 容 器 中 调 用 systemd 那 么 必 须 遵 守 Container Interface [2] 规 范 。 如 果 要 从 initrd 中 调 用 systemd 那 么 必 须 遵 守 initrd Interface [3] 规 范 。

目 录

系 统 单 元 目 录

systemd 会 从 多 个 优 先 级 不 同 的 系 统 单 元 目 录 中 读 取 系 统 单 元 , 软 件 包 应 该 将 系 统 单 元 文 件 安 装 在 pkg-config systemd --variable=systemdsystemunitdir 命 令 所 返 回 的 系 统 单 元 目 录 中 (通 常 是 /usr/lib/systemd/system)。 此 外 , systemd 还 会 读 取 优 先 级 较 高 的 /usr/local/lib/systemd/system 目 录 以 及 优 先 级 较 低 的 /usr/lib/systemd/system 目 录 中 的 系 统 单 元 文 件 。 优 先 级 最 高 的 系 统 单 元 目 录 是 pkg-config systemd --variable=systemdsystemconfdir 命 令 所 返 回 的 目 录 (通 常 是 /etc/systemd/system)。 注 意 , 软 件 包 应 该 仅 使 用 systemctl(1)enabledisable 命 令 修 改 上 述 目 录 中 的 内 容 。 完 整 的 目 录 列 表 参 见 systemd.unit(5) 手 册 。 用 户 单 元 目 录 用 户 单 元 目 录 所 遵 守 的 规 则 与 系 统 单 元 目 录 类 似 , 软 件 包 应 该 将 用 户 单 元 文 件 安 装 在 pkg-config systemd --variable=systemduserunitdir 命 令 所 返 回 的 用 户 单 元 目 录 中 (通 常 是 /usr/lib/systemd/user)。 此 外 , 因 为 用 户 单 元 目 录 还 遵 守 XDG Base Directory specification [4] 规 范 , 所 以 systemd 还 会 读 取 $XDG_DATA_HOME/systemd/user(仅 在 已 设 置 $XDG_DATA_HOME 的 情 况 下 ) 或 ~/.local/share/systemd/user(仅 在 未 设 置 $XDG_DATA_HOME 的 情 况 下 ) 目 录 中 的 用 户 单 元 。 全 局 用 户 单 元 目 录 (针 对 所 有 用 户 )是 pkg-config systemd --variable=systemduserconfdir 命 令 所 返 回 的 目 录 (通 常 是 /etc/systemd/user)。 注 意 , 软 件 包 应 该 仅 使 用 systemctl(1)enabledisable 命 令 修 改 上 述 目 录 中 的 内 容 。 无 论 这 种 修 改 是 全 局 的 (针 对 所 有 用 户 )、 还 是 私 有 的 (针 对 单 个 用 户 )。 完 整 的 目 录 列 表 参 见 systemd.unit(5) 手 册 。

SysV启 动 脚 本 目 录 (不 同 发 行 版 之 间 差 别 可 能 很 大 ) 如 果 systemd 找 不 到 指 定 服 务 所 对 应 的 单 元 文 件 , 那 么 就 会 到 SysV启 动 脚 本 目 录 中 去 寻 找 同 名 脚 本 (去 掉 .service 后 缀 )。

SysV运 行 级 目 录 (不 同 发 行 版 之 间 差 别 可 能 很 大 )

systemd 在 决 定 是 否 启 用 一 个 服 务 的 时 候 , 会 参 照 SysV运 行 级 目 录 对 该 服 务 的 设 置 。 注 意 , 这 个 规 则 不 适 用 于 那 些 已 经 拥 有 原 生 单 元 文 件 的 服 务 。

信 号

SIGTERM

systemd 系 统 实 例 将 会 保 存 其 当 前 状 态 , 然 后 重 新 执 行 它 自 身 , 再 恢 复 到 先 前 保 存 的 状 态 。 基 本 上 相 当 于 执 行 systemctl daemon-reexec 命 令 。

systemd 用 户 实 例 将 会 启 动 exit.target 单 元 。 基 本 上 相 当 于 执 行 systemctl --user start exit.target 命 令 。

SIGINT

systemd 系 统 实 例 将 会 启 动 ctrl-alt-del.target 单 元 。 基 本 上 相 当 于 执 行 systemctl start ctl-alt-del.target 命 令 。 在 控 制 台 上 按 Ctrl-Alt-Del 组 合 键 即 可 触 发 这 个 信 号 。 但 是 , 如 果 在 2秒 内 连 续 收 到 超 过 7次 这 个 信 号 , 那 么 将 会 不 顾 一 切 的 立 即 强 制 重 启 。 因 此 , 如 果 系 统 在 重 启 过 程 中 僵 死 , 那 么 可 以 通 过 快 速 连 按 7次 Ctrl-Alt-Del 组 合 键 来 强 制 立 即 重 启 。

systemd 用 户 实 例 处 理 此 信 号 的 方 式 与 SIGTERM 相 同 。

SIGWINCH

systemd 系 统 实 例 将 会 启 动 kbrequest.target 单 元 。 基 本 上 相 当 于 执 行 systemctl start kbrequest.target 命 令 。

systemd 用 户 实 例 将 会 完 全 忽 略 此 信 号 。

SIGPWR

systemd 将 会 启 动 sigpwr.target 单 元 。 基 本 上 相 当 于 执 行 systemctl start sigpwr.target 命 令 。

SIGUSR1

systemd 将 会 尝 试 重 新 连 接 到 D-Bus 总 线 。

SIGUSR2

systemd 将 会 以 人 类 易 读 的 格 式 将 其 完 整 的 状 态 记 录 到 日 志 中 。 日 期 的 格 式 与 systemd-analyze dump 的 输 出 格 式 相 同 。

SIGHUP 重 新 加 载 守 护 进 程 的 配 置 文 件 。 基 本 上 相 当 于 执 行 systemctl daemon-reload 命 令 。

SIGRTMIN+0 进 入 默 认 模 式 , 启 动 default.target 单 元 。 基 本 上 相 当 于 执 行 systemctl start default.target 命 令 。

SIGRTMIN+1 进 入 救 援 模 式 , 启 动 rescue.target 单 元 。 基 本 上 相 当 于 执 行 systemctl isolate rescue.target 命 令 。

SIGRTMIN+2 进 入 紧 急 维 修 模 式 , 启 动 emergency.target 单 元 。 基 本 上 相 当 于 执 行 systemctl isolate emergency.target 命 令 。

SIGRTMIN+3 关 闭 系 统 , 启 动 halt.target 单 元 。 基 本 上 相 当 于 执 行 systemctl start halt.target 命 令 。

SIGRTMIN+4 关 闭 系 统 并 切 断 电 源 , 启 动 poweroff.target 单 元 。 基 本 上 相 当 于 执 行 systemctl start poweroff.target 命 令 。

SIGRTMIN+5 重 新 启 动 , 启 动 reboot.target 单 元 。 基 本 上 相 当 于 执 行 systemctl start reboot.target 命 令 。

SIGRTMIN+6 通 过 内 核 的 kexec 接 口 重 新 启 动 , 启 动 kexec.target 单 元 。 基 本 上 相 当 于 执 行 systemctl start kexec.target 命 令 。

SIGRTMIN+13 立 即 关 闭 机 器

SIGRTMIN+14 立 即 关 闭 机 器 并 切 断 电 源

SIGRTMIN+15 立 即 重 新 启 动

SIGRTMIN+16 立 即 通 过 内 核 的 kexec 接 口 重 新 启 动

SIGRTMIN+20 在 控 制 台 上 显 示 状 态 消 息 。 相 当 于 使 用 systemd.show_status=1 内 核 引 导 选 项 。

SIGRTMIN+21 禁 止 在 控 制 台 上 显 示 状 态 消 息 。 相 当 于 使 用 systemd.show_status=0 内 核 引 导 选 项 。

SIGRTMIN+22, SIGRTMIN+23 将 日 志 等 级 设 为 "debug"(22) 或 "info"(23)。 相 当 于 使 用 systemd.log_level=debugsystemd.log_level=info 内 核 引 导 选 项 。

SIGRTMIN+24 立 即 退 出 systemd 用 户 实 例 (也 就 是 仅 对 --user 实 例 有 效 )。

SIGRTMIN+26, SIGRTMIN+27, SIGRTMIN+28 将 日 志 等 级 设 为 "journal-or-kmsg"(26) 或 "console"(27) 或 "kmsg"(28)。 相 当 于 使 用 systemd.log_target=journal-or-kmsgsystemd.log_target=consolesystemd.log_target=kmsg 内 核 引 导 选 项 。

环 境 变 量

$SYSTEMD_LOG_LEVEL

systemd 日 志 等 级 。 可 以 被 --log-level= 选 项 覆 盖 。

$SYSTEMD_LOG_TARGET

systemd 日 志 目 标 。 可 以 被 --log-target= 选 项 覆 盖 。

$SYSTEMD_LOG_COLOR

systemd 是 否 应 该 高 亮 重 要 的 日 志 信 息 。 可 以 被 --log-color= 选 项 覆 盖 。

$SYSTEMD_LOG_LOCATION

systemd 是 否 应 该 在 日 志 信 息 中 包 含 代 码 位 置 (code location)。 可 以 被 --log-location= 选 项 覆 盖 。

$XDG_CONFIG_HOME, $XDG_DATA_HOME

systemd 用 户 实 例 根 据 XDG Base Directory specification [4] 规 范 使 用 这 些 变 量 加 载 单 元 文 件 及 其 .{d,wants,requires}/ 目 录 。

$SYSTEMD_UNIT_PATH 单 元 目 录

$SYSTEMD_SYSVINIT_PATH

SysV启 动 脚 本 目 录

$SYSTEMD_SYSVRCND_PATH

SysV运 行 级 目 录

$SYSTEMD_COLORS 控 制 输 出 内 容 的 色 彩 方 案

$LISTEN_PID, $LISTEN_FDS, $LISTEN_FDNAMES 在 基 于 套 接 字 启 动 的 过 程 中 由 systemd 设 置 此 变 量 , 以 供 管 理 程 序 使 用 。 详 见 sd_listen_fds(3) 手 册 。

$NOTIFY_SOCKET 由 systemd 设 置 此 变 量 , 以 报 告 状 态 以 及 提 供 启 动 完 毕 的 通 知 , 以 供 管 理 程 序 使 用 。 详 见 sd_notify(3) 手 册 。

内 核 引 导 选 项

当 作 为 系 统 实 例 运 行 的 时 候 , systemd 能 够 接 受 下 面 列 出 的 内 核 引 导 选 项 。 [5]

systemd.unit=, rd.systemd.unit= 设 置 默 认 启 动 的 单 元 。 默 认 值 是 default.target 。 可 用 于 临 时 修 改 启 动 目 标 (例 如 rescue.target 或 emergency.target )。 详 情 参 见 systemd.special(7) 手 册 。 有 "rd." 前 缀 的 参 数 专 用 于 initrd(initial RAM disk) 环 境 , 而 无 前 缀 的 参 数 则 用 于 常 规 环 境 。

systemd.dump_core= 如 果 设 为 默 认 值 yes , 那 么 systemd(PID=1) 将 会 在 崩 溃 时 进 行 核 心 转 储 , 否 则 不 进 行 任 何 转 储 。

systemd.crash_chvt= 可 以 设 为 一 个 1-63 之 间 的 整 数 或 布 尔 值 。 若 设 为 整 数 则 systemd(PID=1) 将 在 崩 溃 时 切 换 到 指 定 编 号 的 虚 拟 控 制 台 ; 若 设 为 yes , 则 表 示 切 换 到 内 核 消 息 所 使 用 的 虚 拟 控 制 台 ; 若 设 为 no(默 认 值 ) 则 不 切 换 到 任 何 虚 拟 控 制 台 。

systemd.crash_shell= 如 果 设 为 yes , 那 么 systemd(PID=1) 将 在 崩 溃 10秒 后 启 动 一 个 shell , 默 认 值 no 则 表 示 即 使 崩 溃 也 不 启 动 任 何 shell 。 由 于 被 启 动 的 shell 不 需 要 任 何 密 码 认 证 , 所 以 使 用 这 个 特 性 时 需 要 注 意 其 带 来 的 安 全 隐 患 。

systemd.crash_reboot= 如 果 设 为 yes, 那 么 systemd(PID=1) 将 在 崩 溃 10秒 后 自 动 重 启 整 个 机 器 , 默 认 值 no 则 表 示 即 使 崩 溃 也 不 重 启 (无 限 制 的 死 在 那 里 ), 这 样 可 以 避 免 进 入 循 环 重 启 。 如 果 与 systemd.crash_shell=yes 同 时 使 用 , 那 么 系 统 将 在 退 出 shell 之 后 重 启 。

systemd.confirm_spawn= 设 为 yes 表 示 systemd(PID=1) 在 派 生 新 进 程 时 进 行 确 认 提 示 。 默 认 值 no 表 示 不 提 示 。

systemd.show_status= 启 动 时 是 否 在 控 制 台 上 显 示 简 明 的 服 务 状 态 。 可 以 接 受 yes(显 示 ), no(不 显 示 ), auto(自 动 )三 个 值 。 autono 相 似 , 不 同 之 处 在 于 当 某 个 服 务 启 动 失 败 或 者 启 动 耗 时 太 长 时 , 将 会 显 示 其 状 态 。 当 使 用 了 quiet 内 核 引 导 选 项 的 时 候 , 默 认 值 是 auto , 否 则 默 认 值 是 yes

systemd.log_target=, systemd.log_level=, systemd.log_color=, systemd.log_location= 用 于 控 制 日 志 输 出 , 含 义 与 之 前 的 $SYSTEMD_LOG_TARGET, $SYSTEMD_LOG_LEVEL, $SYSTEMD_LOG_COLOR, $SYSTEMD_LOG_LOCATION 环 境 变 量 相 同 。

systemd.default_standard_output=, systemd.default_standard_error= 设 置 服 务 的 默 认 标 准 输 出 与 标 准 错 误 , 含 义 与 相 应 的 --default-standard-output=--default-standard-error= 命 令 行 选 项 相 同 。

systemd.setenv= 接 受 "VARIABLE=VALUE"格 式 的 字 符 串 , 可 用 于 为 派 生 的 子 进 程 设 置 默 认 环 境 变 量 。 可 以 多 次 使 用 以 设 置 多 个 变 量 。

systemd.machine_id= 接 受 一 个 32字 符 表 示 的 16进 制 值 , 用 作 该 主 机 的 machine-id 。 主 要 用 于 网 络 启 动 , 以 确 保 每 次 启 动 都 能 得 到 相 同 的 machine-id 值 。

quiet 关 闭 启 动 过 程 中 的 状 态 输 出 。 相 当 于 systemd.show_status=no 的 效 果 。 注 意 , 因 为 此 选 项 也 同 样 被 内 核 所 识 别 , 并 用 于 禁 止 输 出 内 核 日 志 , 所 以 使 用 此 选 项 会 导 致 同 时 关 闭 内 核 与 systemd 的 输 出 。

debug 开 启 调 试 输 出 , 等 价 于 设 置 了 systemd.log_level=debug 。 注 意 , 因 为 此 选 项 也 同 样 被 内 核 所 识 别 , 并 用 于 开 启 内 核 的 调 试 输 出 , 所 以 使 用 此 选 项 会 导 致 同 时 开 启 内 核 与 systemd 的 调 试 输 出 。

emergency, rd.emergency, -b 启 动 到 紧 急 维 修 模 式 。 等 价 于 设 置 了 systemd.unit=emergency.targetrd.systemd.unit=emergency.target

rescue, rd.rescue, single, s, S, 1 启 动 到 救 援 模 式 。 等 价 于 设 置 了 systemd.unit=rescue.targetrd.systemd.unit=rescue.target

2, 3, 4, 5 启 动 到 对 应 的 SysV 运 行 级 。 等 价 于 设 置 了 对 应 的 systemd.unit=runlevel2.target, systemd.unit=runlevel3.target, systemd.unit=runlevel4.target, systemd.unit=runlevel5.target,

locale.LANG=, locale.LANGUAGE=, locale.LC_CTYPE=, locale.LC_NUMERIC=, locale.LC_TIME=, locale.LC_COLLATE=, locale.LC_MONETARY=, locale.LC_MESSAGES=, locale.LC_PAPER=, locale.LC_NAME=, locale.LC_ADDRESS=, locale.LC_TELEPHONE=, locale.LC_MEASUREMENT=, locale.LC_IDENTIFICATION= 设 置 相 应 的 系 统 locale , 会 覆 盖 /etc/locale.conf 中 的 设 置 。 参 见 locale.conf(5)locale(7) 手 册 。 更 多 内 核 引 导 选 项 的 解 释 , 参 见 kernel-command-line(7) 手 册 。

SOCKETS 与 FIFOS

/run/systemd/notify 通 知 守 护 进 程 状 态 的 UNIX socket 文 件 , 用 于 实 现 sd_notify(3) 中 实 现 的 守 护 进 程 通 知 逻 辑 。

/run/systemd/private 仅 被 systemctl(1) 工 具 内 部 用 于 与 systemd 进 程 通 信 的 UNIX socket 文 件 。 其 他 进 程 不 应 该 使 用 它 。

/dev/initctl 由 systemd-initctl.service 单 元 提 供 的 与 传 统 SysV 兼 容 的 客 户 端 接 口 (FIFO)。 这 是 一 个 即 将 被 废 弃 的 接 口 , 尽 量 不 要 使 用 它 。

参 见

systemd Homepage [6] , systemd-system.conf(5), locale.conf(5), systemctl(1), journalctl(1), systemd-notify(1), daemon(7), sd-daemon(3), systemd.unit(5), systemd.special(5), pkg-config(1), kernel-command-line(7), bootup(7), systemd.directives(7)

NOTES

1.

cgroups

https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt

2.

Container Interface

http://www.freedesktop.org/wiki/Software/systemd/ContainerInterface

3.

initrd Interface

http://www.freedesktop.org/wiki/Software/systemd/InitrdInterface

4.

XDG Base Directory specification

http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html

5. 当

systemd 在 Linux 容 器 中 运 行 的 时 候 , 这 些 参 数 可 以 直 接 在 systemd

命 令 行 上 传 递 (放 置 在 所 有 命 令 行 选 项 之 后 ), 当 systemd 不 在 Linux 容 器 中 运 行 的 时 候 , 这 些 参 数 将 从 /proc/cmdline 中 获 取 。

6.

systemd Homepage

http://www.freedesktop.org/wiki/Software/systemd/

本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。 翻 译 人 员 : 金 步 国 金 步 国 作 品 集 : http://www.jinbuguo.com 中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh