传递给 systemd 的参数必须驻留在哪里?

传递给 systemd 的参数必须驻留在哪里?

论点 或者-标志systemctl可以在启动服务时传递给 systemd 。

但是参数需要驻留在

  1. 服务
  2. 系统
  3. 别的地方

换句话说,参数必须可由服务本身调用/由服务本身调用(正如我假设的那样)?

答案1

参数通常存在于服务文件的行中ExecStart=

# /lib/systemd/system/myservice.service
[Unit]
ExecStart=/bin/myprogram arg1 arg2

您提供的链接之一使用模板化的定义参数之一的服务

# /lib/systemd/system/[email protected]
[Unit]
ExecStart=/bin/myprogram %i

[Install]
WantedBy=multi-user.target

这将允许您使用不同的参数启用同一服务的多个实例。

systemctl enable --now [email protected]
systemctl enable --now [email protected]

这将导致两个实例运行,并具有不同的参数: /bin/myprogram arg1/bin/myprogram/arg2


是否可以在不打开 GUI 的情况下启动服务?

现在你变得具体了。听起来你有一个服务可以启动一个管理 docker 的 GUI。在这种情况下,我怀疑systemd是错误的地方。您docker-desktop.service可能不运行任何容器,而只是提供一个接口来与运行的服务进行交互。该服务可以将所有容器实例作为子进程进行管理,而无需systemd参与。

看看(只是猜测)

systemctl list-units *docker*

我打赌这将揭示负责管理容器的实际服务。

Docker 容器通常不需要这样的执行程序,并且通常可以通过 systemd 来管理它们,但是您需要.service为每个容器拥有一个文件,每个容器都有自己的一组参数。

相关内容