什么是 systemd
systemd 是一个用于管理 Linux 系统启动过程和系统服务的初始化系统。它是现代 Linux 发行版中广泛采用的初始化系统,负责启动和管理操作系统的各个组件。
systemd 的设计目标是提高系统启动速度、优化资源管理和提供更强大的服务管理功能。它引入了一些新的概念和功能,包括并行启动、按需启动服务、基于套接字的激活、更好的日志记录和跟踪等。
以下是 systemd 的一些主要特点和组件:
-
单位(Units):systemd 使用单位(units)来表示系统组件和服务。每个单位代表一个特定的系统资源或功能,例如服务、套接字、设备等。每个单位都有一个对应的配置文件,用于定义它的属性和依赖关系。
-
systemd 套件:systemd 包含了一系列工具和服务,用于系统的管理和操作。其中一些重要的组件包括 systemd 命令行工具(如 systemctl、journalctl)、systemd 日志系统(journal)、systemd 网络管理(systemd-networkd)等。
-
并行启动:systemd 实现了并行启动,可以同时启动多个系统服务,提高系统启动速度。
-
依赖关系和顺序控制:通过单位之间的依赖关系,systemd 可以确保服务在其依赖的其他服务启动之后才启动。这样可以更精确地控制启动顺序和服务之间的关联。
-
套接字激活:systemd 支持基于套接字的激活,允许服务在需要时由请求者动态启动,而不是持续运行。
-
日志记录和跟踪:systemd 使用 journalctl 工具来记录和管理系统日志。它支持强大的日志过滤和查询功能,可以更方便地查看和分析系统日志。
systemd 的引入带来了对传统 SysV init 系统的改进,提供了更快、更灵活和更可靠的系统初始化和服务管理功能。它已经成为许多主流 Linux 发行版的默认初始化系统,如 Ubuntu、Fedora、CentOS 等。
systemd 相关工具
下面是 systemd 相关工具的简要说明和使用方法:
-
systemd:systemd 初始化系统的主要命令,用于启动和管理系统服务,管理单位等。它可以使用
systemctl
命令来启动、停止、重启、启用、禁用和管理系统服务。 -
systemd-analyze:用于分析系统启动时间和性能的工具。可以使用
systemd-analyze blame
命令来查看每个单位的启动时间,使用systemd-analyze plot
命令生成启动性能图。 -
systemd-ask-password:用于与用户交互以获取密码或其他验证信息的工具。可以使用
systemd-ask-password
命令来请求密码或其他验证信息,并将结果传递给其他命令或服务。 -
systemd-cat:将标准输入或文件的内容输出到 systemd 日志(journal)的命令。可以使用重定向或管道将消息发送到 journal,例如
echo "Hello" | systemd-cat
。 -
systemd-cgls:用于显示 cgroups 层次结构的命令。可以使用
systemd-cgls
命令来列出当前系统中的 cgroups 以及它们的层次关系。 -
systemd-cgtop:用于显示正在运行的 cgroups 中的进程和资源使用情况的命令。使用
systemd-cgtop
命令可以实时监视 cgroups 中的进程资源。 -
systemd-delta:用于比较和显示文件和单位之间的差异的工具。可以使用
systemd-delta
命令来比较系统配置文件和单位文件的更改情况。 -
systemd-tty-ask-password-agent:系统密码代理程序,用于在 tty 终端上向用户请求密码。它与
systemd-ask-password
命令一起使用,用于安全地处理密码输入。 -
systemd-detect-virt:用于检测当前系统是否运行在虚拟化环境中的工具。可以使用
systemd-detect-virt
命令来检测系统是否是在虚拟机或容器中运行。 -
systemd-escape:用于转义字符串以在 systemd 配置文件中使用。可以使用
systemd-escape
命令将特殊字符转换为适合在配置文件中使用的形式。 -
systemd-hwdb:硬件数据库工具,用于管理和查询 systemd 的硬件数据库。它用于设备和驱动程序的匹配和识别。
-
systemd-id128:用于生成或处理 128 位的唯一标识符(UUID)的工具。
-
systemd-inhibit:用于阻止或延迟系统操作的工具。可以使用
systemd-inhibit
命令来阻止休眠、关机、重启等操作。 -
systemd-machine-id-setup:用于生成或设置机器 ID 的工具。可以使用
systemd-machine-id-setup
命令来生成新的机器 ID 或设置现有的机器 ID。 -
systemd-mount:用于挂载和卸载文件系统的工具。可以使用
systemd-mount
命令来挂载或卸载文件系统,例如systemd-mount /dev/sdb1 /mnt
。 -
systemd-notify:用于向 systemd 发送状态通知的工具。可以使用
systemd-notify
命令发送自定义状态和通知给 systemd。 -
systemd-path:用于查询系统文件路径的工具。可以使用
systemd-path
命令来获取各种系统路径,如配置文件路径、单元文件路径等。 -
systemd-resolve:用于系统的 DNS 解析和域名解析的工具。可以使用
systemd-resolve
命令来查询 DNS 信息、解析域名等。 -
systemd-run:用于在不创建新服务单元文件的情况下运行临时任务的命令。可以使用
systemd-run
命令在不创建新服务单元文件的情况下运行临时任务,例如systemd-run --unit=my-service /usr/bin/my-command
。 -
systemd-socket-activate:用于在需要时动态激活套接字的工具。可以使用
systemd-socket-activate
命令来启动和管理套接字单元。 -
systemd-stdio-bridge:用于在标准输入/输出之间转发数据的工具。它可以将数据从一个程序的标准输出传递到另一个程序的标准输入。
-
systemd-sysusers:用于管理和创建系统用户和组的工具。可以使用
systemd-sysusers
命令来创建、修改和删除系统用户和组。 -
systemd-tmpfiles:用于管理临时文件和目录的工具。可以使用
systemd-tmpfiles
命令来创建、清理和维护临时文件和目录。 -
systemd-umount:用于卸载文件系统的工具。可以使用
systemd-umount
命令来卸载已挂载的文件系统,例如systemd-umount /mnt
。
这些工具都具有不同的功能和用途,用于系统管理和操作。您可以在终端中使用相应的命令加上适当的参数来调用这些工具,并根据每个工具的特定用法提供必要的参数和选项。您可以使用各个工具的 man 页面或命令帮助来获取更详细的信息和使用示例,例如 man systemd-analyze
或 systemd-ask-password --help
。
环境
OS : unbuntu 20.04