取消设置 systemd 替代中的选项

取消设置 systemd 替代中的选项

背景:

我有一个包提供了与 LXD 不兼容的 systemd 单元文件。具体来说,它使用以下两个选项,这两个选项在容器内似乎失败:

[Service]
IOSchedulingClass=realtime
CPUSchedulingPolicy=rr

所以,我尝试使用 drop-in 覆盖这些systemctl edit与以下内容一起使用:

[Service]
IOSchedulingClass=
CPUSchedulingPolicy=

但后来我收到以下消息journalctl -xe

Jun 17 18:40:14 nickel systemd[1]: [/etc/systemd/system/freeswitch.service.d/override.conf:2] Failed to parse IO scheduling class, ignoring: 
Jun 17 18:40:14 nickel systemd[1]: [/etc/systemd/system/freeswitch.service.d/override.conf:4] Failed to parse CPU scheduling policy, ignoring: 

问题:

似乎不允许取消这样的选项。我还尝试使用一对空引号(例如IOSchedulingClass="")。执行此操作的正确方法是什么?我知道我可以覆盖整个单元文件,但如果可能的话,我不想屏蔽打包单元文件中的任何后续更新。

作为参考,systemd.exec(5)联机帮助页建议应该有某种方法可以做到这一点:

如果将此选项指定为空字符串,则之前对 IOSchedulingClass= 和 IOSchedulingPriority= 的所有指定均无效。

答案1

这听起来像是一个错误,但我会尝试

[Service]
IOSchedulingClass=best-effort
CPUSchedulingPolicy=other

解决它。这些是默认值,取自ioprio_setsched_setscheduler联机帮助页。

当然,您也可以通过将同名的文件放入/etc/systemd/system/.明智的做法是避免这样做,因为它肯定需要更多的维护工作(尽管您可以将其编写为容器构建的一部分)。

相关内容