我的计算机上的服务有一个默认的单元文件,用于指定[Service]
部分中的[Service]
PIDFile=
设置。我想清除此设置,以便不为此单元指定PID文件。
我已经创建了我的覆盖。 Systemd看到它,所以它正常工作,但我不知道我应该使用什么语法来清除设置。我在我的覆盖中试过这个:
# systemctl daemon-reload
# systemctl status myservice.service
...
Jan 14 16:15:07 host systemd[1]: [/etc/systemd/system/myservice.service.d/override.conf:1] Not an absolute path, ignoring:
但这会导致错误:
PIDFile=none
我也试过cid iid t1 t2 t3 t4 t5
4503 2 4 5 5 6 7
4503 2 7 5 3 2 8
841 2 9 2 1 5 7
2134 1 6 9 8 2 1
,但这也会导致错误。我该如何清除此设置?
答案 0 :(得分:5)
https://www.freedesktop.org/software/systemd/man/systemd.unit.html
有关于此主题的一些信息允许多次指定各种设置,其中 案例解释取决于设置。经常是多重的 设置形成一个列表,并设置为空值"重置",哪个 表示先前的分配被忽略。当这是允许的时候 在设置说明中提到。
然而,在https://www.freedesktop.org/software/systemd/man/systemd.service.html的PIDFile
指令说明中没有关于重置此值的信息,根据之前的报价意味着它无法重置。
稍后,在示例2.覆盖供应商设置部分中,提供了有关从列表中删除条目的一些信息:
请注意,对于插入文件,如果想要删除a中的条目 设置被解析为列表(并且不是依赖项),例如 一个人需要ConditionPathExists =(或者例如服务单元中的ExecStart =) 首先清除列表,然后重新添加除一个之外的所有条目 那将被删除。请参阅下面的示例。
引用示例(为简洁起见编辑):
原始单位:
[Unit]
(...)
AssertPathExists=/srv/webserver
Drop-in文件:
[Unit]
(...)
AssertPathExists=
AssertPathExists=/srv/www
还有以下声明:
请注意,依赖项(After =等)不能重置为空 list,所以只能在drop-ins中添加依赖项。如果你想 删除依赖项,您必须覆盖整个单元。