systemd - System and Service Manager

systemd - System and Service Manager

📅 2014-12-10 | 🖱️
🔖 linux

systemd

systemd #

systemd是Linux系统的一套基础构建模块。它提供了一个系统和服务管理器,以PID 1运行并启动系统的其他部分。

systemd提供激进的并行化能力,使用套接字和D-Bus激活机制启动服务,支持按需启动守护进程,通过Linux控制组(control groups)跟踪进程,管理挂载点和自动挂载点,并通过事务性依赖关系实现复杂的服务控制逻辑。systemd支持SysV和LSB初始化脚本,可以替代传统的sysvinit。

此外,systemd包括一个日志守护进程,用于控制基本系统配置的工具(如主机名、日期、区域设置等),维护登录用户列表、运行中的容器和虚拟机、系统账户、运行时目录及其设置的工具,以及用于管理简单网络配置、网络时间同步、日志转发和名称解析的守护进程。

挂载需求 #

systemd对引导过程中Linux文件系统层次结构的不同部分提出了明确的要求,这些部分必须在特定时间点可用并完成挂载。如果这些挂载所依赖的文件系统位于外部或远程介质上,而这些介质需要特殊驱动程序、基础设施或网络支持,则这些功能必须在该时间点之前已启动并运行。

通常,这些要求分为以下三类:

  1. 🌥️ initrd:需要在操作系统切换到根文件系统之前完成挂载的文件系统。(即需要在 initrd 阶段完成,initrd→host 切换之前。)
  2. 🌤️ early:需要在早期引导过程中挂载的文件系统。这些挂载发生在 initrd→host 切换之后,但在常规服务启动之前。(即在 local-fs.target 达到之前。)
  3. ☀️ regular:可以在引导过程中的任何时间完成挂载的文件系统——但某些具体的服务可能要求这些挂载在服务启动时已经完成。(通常,这些挂载会安排在 remote-fs.target 之前完成。)

需要注意的是,第 3 类挂载同样可以在 initrd 阶段或早期引导过程中完成,而第 2 类挂载也可以在 initrd 阶段完成。

以下是相关挂载及其所属类别的表格:

MountCategory
/ (root fs)1
/usr/1
/etc/1
/var/2
/var/tmp/2
/tmp/2
/home/3
/srv/3
XBOOTLDR3
ESP3

换句话说,根文件系统(显然是必需的)、/usr/ 和 /etc/(如果被拆分)必须在 initrd 过渡到主机时完成挂载。随后,/var/(包含 /var/tmp/)和 /tmp/(如果被拆分)必须在主机进入 local-fs.target(然后是 basic.target)之前完成挂载。其余的挂载可以在此之后逐步建立。

如果像 /var/ 这样的挂载在早期引导阶段(或 initrd 阶段)未完成,并且依赖于某些后期启动的服务(如网络管理器实现)才能运行,这可能引发循环排序依赖,从而导致启动失败。

如果计划将网络支持的挂载(如 NFS、SMB、iSCSI、NVME-TCP 等,或任何带有 _netdev 伪挂载选项的挂载)用于第 1 类或第 2 类挂载,请确保使用能够在 initrd 阶段或早期引导期间运行的网络管理实现。例如,systemd-networkd(8) 在这类场景下非常适用。

需要注意,systemd-homed.service(8)(这是一个常规服务,即运行于 basic.target 之后)要求 /home/ 已完成挂载。

手册页 #

面向管理员的systemd博客系列 #

好的,这是按照您要求的格式进行的翻译:

systemctl常用命令 #

验证服务是否启动:

 1systemctl status chronyd | grep Active
 2     Active: active (running) since 
 3
 4systemctl is-active chronyd
 5active
 6
 7systemctl stop chronyd
 8
 9systemctl status chronyd | grep Active
10     Active: inactive (dead) since 
11
12systemctl is-active chronyd
13inactive
14
15systemctl start chronyd

查看开机启动项:

1systemctl list-unit-files --type=service | grep enabled

参考 #

© 2025 青蛙小白 | 总访问量 | 总访客数