当前位置: 首页 > 文档资料 > systemd 中文手册 >

systemd.preset 中文手册

优质
小牛编辑
145浏览
2023-12-01

名称

systemd.preset — 服务预设文件

大纲

/etc/systemd/system-preset/*.preset

/run/systemd/system-preset/*.preset

/usr/lib/systemd/system-preset/*.preset

/etc/systemd/user-preset/*.preset

/run/systemd/user-preset/*.preset

/usr/lib/systemd/user-preset/*.preset

描述

预设文件(*.preset)可用于设置哪些单元应该默认启用/停用。systemctl preset 命令(详见systemctl(1))通常用于软件包的安装脚本。在安装开始之前或完成之后,根据预设文件的指引,启用或停用一组特定的单元。

详见 Presets文档以了解更多有关预设的逻辑。

反对在软件包中内置预设文件,而是应该在发行版内部将所有预设文件集中在一起,以方便系统管理员修改预设策略。

如果不存在预设文件,systemctlpreset 命令将会默认启用所有已安装的单元。如果这不是你想要的(也就是其实你想默认停用所有单元),那么必须内置一个仅包含一行"disable *"的预设文件(参见下文的"例1")

预设文件格式

预设文件的格式是一系列"enable|disable 单元名"模式的行,其中的"单元名"可以包含shell风格的通配符。空白行和以 # 或 ; 开头的行将被忽略。

注意,必须在预设中引用"真实"的单元文件,不可引用任何别名(参见systemd.unit(5)以了解单元的"别名")。

"enable" 表示默认启用指定的单元、"disable" 表示默认停用指定的单元。

如果多行都匹配同一个单元,那么以第一个匹配的行为准。

预设文件的名称必须符合"优先级-策略名.preset" 格式,其中的"优先级"是两位十进制数字。软件包应该将自带的预设文件安装在 /usr/lib/ 目录中。/etc/ 目录仅供系统管理员使用。所有的预设文件(无论位于哪个目录中),统一按照文件名的字典顺序处理。如果有多个预设文件都作用于同一个单元,那么仅以文件名最靠前(前缀数字最小)的那一个为准。对于不同目录下的同名预设文件,仅以优先级最高的目录中的那一个为准。具体说来就是:/etc/ 的优先级最高、/run/ 的优先级居中、/usr/lib/ 的优先级最低。

如果系统管理员想要屏蔽 /usr/lib/ 目录中的某个预设文件,那么最佳做法是在 /etc/ 目录中创建一个指向 /dev/null 的同名符号链接,即可彻底屏蔽 /usr/lib/ 目录中的同名文件。

例子

例 1. 默认停用

# /usr/lib/systemd/system-preset/99-default.preset

disable *

默认停用所有单元。将前缀设为"99-"以确保被最后读取(优先级最低、易于被覆盖)。

例 2. 一个针对 GNOME 定制的预设

# /usr/lib/systemd/system-preset/50-gnome.preset

enable gdm.service
enable colord.service
enable accounts-daemon.service
enable avahi-daemon.*

这是一个GNOME软件包自带的预设文件。明确启用三个指定的单元以及所有前缀名为 avahi-daemon的单元(不考虑单元类型)。这样可以确保仅启用所有GNOME所依赖的单元,同时又不改变其他单元。

例 3. 管理员自定义的预设

# /etc/systemd/system-preset/00-lennart.preset

enable httpd.service
enable sshd.service
enable postfix.service
disable *

这是一个系统管理员自定义的预设策略。在明确启用了三个指定单元的同时,停用了所有其他单元。将前缀设为 "00-" 以确保被最先读取(优先级最高),这样所有之后与此冲突的预设文件都将变得无效。

参见

systemd(1),systemctl(1),systemd-delta(1)