systemd.preset 中文手册
名称
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-
" 以确保被最先读取(优先级最高),这样所有之后与此冲突的预设文件都将变得无效。