编程 systemd 262:服务重启加随机抖动、Slice 限并发激活、System V 脚本彻底删除

2026-10-15 21:03:21

systemd 262:服务重启加随机抖动、Slice 限并发激活、System V 脚本彻底删除

systemd 262 于 2026-09-22 正式发布,仓库在 github.com/systemd/systemd,发布说明见 v262 release。下面按子系统记一遍值得关注的新增项与不兼容变更。

服务管理:重启抖动与并发激活上限

新增 RestartRandomizedDelaySec=。此前 RestartSec= 是固定值,一个底层依赖挂掉后,成百上千个服务会在同一秒被拉起来,把刚恢复的依赖再打一遍。这个选项给自动重启叠加一段随机延迟,把重启时间摊开。写法和 RestartSec= 一样放在 [Service] 段里。

Slice 单元新增 ActivatingConcurrencyMax=,用来限制某一 slice 层级中同时处于激活过程的单元数量,超出上限的单元排队等待。适合给一类会争抢资源的服务设一个上限,而不是让它们一拥而上。

容器与虚拟化

支持把 systemd 编译成单个静态链接的 PID 1 / executor 二进制。目标是极小的容器镜像:省掉动态库加载,并用简化的用户/组查找替代 NSS。对依赖 NSS 做复杂用户解析的场景,这属于行为差异,容器里如果用了 NSS 模块需要先确认。

systemd-vmspawn 的 --coco= 增加 Intel TDX 支持,此前已有 AMD SEV-SNP。

安全与加密

TPM 密封凭证现在绑定到 TPM 的 Storage Root Key,用于抵御中间 TPM 设备攻击——即凭证被拿到另一块 TPM 上解封的路径被堵住。

TPM2 PIN 注册新增 Argon2id 作为密钥派生;systemd-cryptenroll 增加可选的首次启动向导。

homed 新建的 fscrypt 家目录默认使用 fscrypt v2 策略。注意 v1 没有原地升级路径,已有 v1 家目录要迁移只能走重建流程,升级前先确认现有用户落在哪套策略上。

journal

非正常关机后,header/tail 被截断的活动 journal 文件现在能恢复出有效条目,不再整段作废。journal sealing 的实现从 libgcrypt 迁到 OpenSSL。

网络

networkctl reload 新增 --no-reconfigure:只重载 .network、.netdev 配置,不对现有链路做重新配置。改配置但不希望瞬时断链的场合用这个标志,例如只想更新尚未生效的配置项时。

networkctl reload --no-reconfigure

.link、.network、.netdev 的 [Match] 段支持 MachineTag=。

其它

OpenSSL 4 支持;run0 新增若干类似 sudo 的选项;systemd-firstboot 增加 headless 模式;实验性的 --introspect-cli 以 JSON 暴露命令元数据,脚本可以直接解析,不必再刮 --help 输出。

弃用与不兼容:升级前要确认的三件事

遗留 udev 控制 socket 协议被移除,改用 Varlink IPC。这是破坏性的:任何直接向 udev 控制 socket 写入的第三方工具、脚本或监控代理都会失效,需要改到 Varlink 接口上。如果链路里存在这类组件,先在测试机上跑一遍再动生产。

System V 服务脚本支持已在 v260 移除,rc-local.service、systemd-sysv-generator 等随之消失。262 里这条路径已经不存在,从更早版本跨版本升级时,/etc/init.d/ 下的脚本不会再生效——先确认哪些服务还挂在 SysV 脚本上,提前转成 unit。

udev 规则与 networkd 配置里使用非系统用户/组被弃用,目前会打告警。这类规则应改为系统用户/组。

仓库与发布页:github.com/systemd/systemd、v262。

复制全文 生成海报 Linux systemd 运维 服务管理

推荐文章

程序员茄子在线接单