systemd.preset 中文手册

译者:金步国


版权声明

本文译者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。

其他作品

本文译者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有的作品集:

联系方式

由于译者水平有限,因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好),请来信指出,任何提高译文质量的建议我都将虚心接纳。


手册索引 . 指令索引systemd-235

名称

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 文档以了解更多有关预设的逻辑。

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

如果不存在预设文件,systemctl preset 命令将会默认启用所有已安装的单元。 如果这不是你想要的(也就是其实你想默认停用所有单元), 那么必须内置一个仅包含一行 "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. /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)