systemdに渡されたパラメータはどこにあるべきですか?

systemdに渡されたパラメータはどこにあるべきですか?

議論 または- シンボルマークsystemctlサービスの起動時に systemd に渡すことができます。

ただし、パラメーターは次の場所になければなりません。

  1. 提供する
  2. システム
  3. 他の場所

つまり、パラメータはサービス自体によって/サービス自体から呼び出せる必要があります(私が想定したように)?

答え1

パラメータは通常サービスファイルの行にありますExecStart=

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

提供したリンクの1つを使用してください。テンプレート化パラメータの1つを定義するサービス

# /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これにより、2つのインスタンスが異なるパラメータを使用して実行されます /bin/myprogram/arg2


GUIを開かなくてもサービスを開始できますか?

これで具体的に知ることができます。 Dockerを管理するGUIを起動するサービスがあるようです。この場合、私の疑いはsystemd間違った場所にあります。コンテナを実行しない可能性がdocker-desktop.serviceありますが、実行中のサービスと対話できるインターフェイスを提供するだけです。サービスは、systemd介入なしにすべてのコンテナインスタンスを子プロセスとして管理できます。

一度見てください(推測だけです)

systemctl list-units *docker*

コンテナ管理を担当する実際のサービスが明らかになると確信しています。

Dockerコンテナには通常、これらのランチャーは必要なく、通常はsystemdを介して管理できますが、.service各コンテナには独自のパラメータセットを持つファイルが必要です。

関連情報