Johan Asked: 2024-03-12 21:12:30 +0800 CST2024-03-12 21:12:30 +0800 CST 2024-03-12 21:12:30 +0800 CST 传递给 systemd 的参数必须驻留在哪里? 772 例如,在启动服务时,可以将参数 或-flags传递给 systemd 。systemctl 但是参数需要驻留在 服务 系统 别的地方 换句话说,参数必须可由服务本身调用/由服务本身调用(正如我假设的那样)? systemd 1 个回答 Voted Best Answer Stewart 2024-03-13T17:46:11+08:002024-03-13T17:46:11+08:00 参数通常存在于服务文件的行中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为每个容器拥有一个文件,每个容器都有自己的一组参数。
参数通常存在于服务文件的行中
ExecStart=
。您提供的链接之一使用模板化服务来定义参数之一
这将允许您使用不同的参数启用同一服务的多个实例。
这将导致两个实例运行,并具有不同的参数:
/bin/myprogram arg1
和/bin/myprogram/arg2
。现在你变得具体了。听起来你有一个服务可以启动一个管理 docker 的 GUI。在这种情况下,我怀疑
systemd
是错误的地方。您docker-desktop.service
可能不运行任何容器,而只是提供一个接口来与运行的服务进行交互。该服务可以将所有容器实例作为子进程进行管理,而无需systemd
参与。看看(只是猜测)
我打赌这将揭示负责管理容器的实际服务。
Docker 容器通常不需要这样的执行程序,并且通常可以通过 systemd 来管理它们,但是您需要
.service
为每个容器拥有一个文件,每个容器都有自己的一组参数。