ユニットテンプレートと非テンプレートターゲットユニット

ユニットテンプレートと非テンプレートターゲットユニット

私はカスタムユニットファイルを/ etcから離れた独自のディレクトリに保存するのが好きです。 247では、次のようなものを使用することが有効です。

systemctl enable /path/to/unit.service

これは、テンプレート、さらには関連タイマーを持つテンプレートにも当てはまります。

systemctl enable /path/to/timed-unit@.*

次にインスタンス化します。

systemctl enable [email protected]

ただし、252でパス名を使用してファイルを有効にしようとすると、次のエラーが発生します。

Failed to enable unit: Destination unit timers.target is a non-template unit.

または:

Failed to enable unit: Destination unit multi-user.target is a non-template unit.

ドキュメント[1]には、テンプレートがサービスを一覧表示する場合(この場合はsを介して)有効になっている場合、またはインスタンスを提供する必要がWantedByあることが示されています。DefaultInstanceこれは意味があるため、動作が強化されたか、252でバグが修正されました。

ただし、パスにインスタンスを提供すると、期待どおりにファイルが見つからないというエラーが発生します。おそらく直接シンボリックリンクを作成できますが、後でインスタンスで有効にするためにファイルシステムにユニットファイルを登録するようにsystemdを取得する方法はありますか?

[1]https://www.freedesktop.org/software/systemd/man/systemd.unit.html#%5BInstall%5D%20Section%20Options

答え1

ファイルシステムのテンプレート単位はする登録されましたが、エラーメッセージ/出力が変更され、承認されませんでした。

したがって、インスタンスをアクティブにした後は、以前と同じように機能します。

答え2

AFAIK、テンプレート単位を有効にすることはできず、インスタンス単位のみを有効にする必要があります。テンプレート自体は、それ自体で開始できる実際の単位ではないためです。

テンプレート単位を有効にする代わりに(システムにシンボリックリンクを作成して実際のファイルを見つけることができるようにするためのものです)、この目的のために特別にコマンドを/etc使用してみてください。systemctl link

関連情報