为什么在 systemd 覆盖中的另一个 ExecStart=/new/value 之前使用 ExecStart= (没有值)?

奶牛

我想用systemd覆盖的方式让dockerd监听2376端口。所以我按照这个指令

另一方面,我想深入了解 systemd 以了解幕后发生的事情。所以我试图通过这个命令检查 docker 的单元文件:systemctl cat docker.service

根据命令的输出,涉及到两个文件。

  1. /lib/systemd/system/docker.service
  2. /etc/systemd/system/docker.service.d/override.conf

我相信第一个是 docker 的默认单元文件,第二个是我创建的。

我的问题是:两个文件都包含句子 -ExecStart=在第二个文件中包含两次,例如:

ExecStart=
ExecStart=/usr/bin/dockerd -H fd://

ExecStart=在设置有意义的值之前是否需要分配空ExecStart=/usr/bin/dockerd -H fd://

我把这篇文章分成两个问题,另一个在这里

拉尔斯克

将条目添加到覆盖文件时,它们默认附加到任何现有条目。也就是说,如果您的服务example.service具有:

[Service]
EnvironmentFile=/etc/foo.env

你创建/etc/systemd/system/example.service.d/override.conf

[Service]
EnvironmentFile=/etc/bar.env

那么有效的配置是:

[Service]
EnvironmentFile=/etc/foo.env
EnvironmentFile=/etc/bar.env

对于许多指令来说这很好,但是一个服务只能有一个ExecStart(除非它是一个Type-oneshot服务),所以如果你尝试创建一个像这样的覆盖文件:

[Service]
ExecStart=/new/command/line

这将失败并出现以下错误:

systemd: example.service has more than one ExecStart= setting, which is only allowed for Type=oneshot services. Refusing.

通过指定一个空的 ExecStart,您正在“清除”所有以前的条目。所以如果你example.service有:

[Service]
ExecStart=/bin/foo

然后您创建一个覆盖,如:

[Service]
ExecStart=
ExecStart=/bin/bar

有效配置为:

[Service]
ExecStart=/bin/bar

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

与多个execStart一起使用

在命令路径中为Systemd服务中的ExecStart使用变量

Systemd ExecStart中的Bash Brace扩展

为什么我可以从另一个文件调用一个函数(带有警告),但是不能在不声明的情况下使用另一个文件中的变量?

在ExecStart(systemd)中使用sudo

为什么对象会自动从之前或之后初始化的另一个对象继承值?

如何通过使用源自另一个表的另一行中的值来覆盖行值?

如何在没有WSGI的情况下为Gunicorn配置ExecStart?

为什么使用另一个按钮后文件没有被删除

如何在OnPreferenceChange中保存另一个值而不是newValue?

docker.service:服务缺少ExecStart =和ExecStop =设置。拒绝

通过命令行完美运行,无法通过systemd ExecStart运行

是否可以将systemd依赖项仅应用于单元的“ ExecStart”操作?

systemd:服务缺少ExecStart =和ExecStop =设置。拒绝

如何在执行ExecStart条目之前停止服务?

为什么我没有在另一个活动中获得传递的值?

Systemd ExecStartPre在下一行中的ExecStart之前获取变量

Systemd同时运行ExecStart和ExecStop

在systemctl.service文件的execstart中允许$ HOME env var

如何正确设置我的 systemd 服务 ExecStart?

为什么我的图像没有显示在另一个 div 内的 div 中?

为什么在另一个活动中没有图片预览?

为什么一个变量的值似乎覆盖了另一个?

为什么我在一个匹配中没有收到关于使用可能未初始化的值的错误,但在另一个使用“panic”的匹配中却没有?

如何使用另一个结构覆盖可变引用中的所有字段?

为什么一个函数中的参数可以被另一个函数识别而没有 beig declered?

ExecStart bash 腳本失敗;但是,手動運行它是有效的

Golang webapp 的 systemd 服务中的 ExecStart 失败

如何在 ExecStart 中执行多个命令