システムユニット名に「プレフィックスの最終コンポーネント」を使用する例は何ですか?

システムユニット名に「プレフィックスの最終コンポーネント」を使用する例は何ですか?

Systemdを使用すると、次の説明に従ってテンプレート単位を作成できます。システム装置

テンプレートセルでは、多くの変数を使用できます。

私は次に興味があります"%j"

これは、最後の「-」とプレフィックス名の末尾の間の文字列です。

「プレフィックス名」も定義されます。

インスタンス化されたセルの場合、セル名の最初の「@」文字の前にある文字列。

私は確信しています彼らは不明です。なぜ彼らは存在します。

私は彼らが同じサービスの複数のバージョンを実行していると思います。これがどのように使用されるかについての実際のケースは何ですか?

答え1

.d/デバイスの横にあるディレクトリに追加の設定がある可能性があります。たとえば、foo.serviceに拡張できますfoo.service.d/*.conf

テンプレート単位はインスタンスとテンプレートという2つのディレクトリを使用するため、両方のディレクトリ[email protected]で拡張されます。[email protected]/*.conf そして [email protected]/*.conf。これにより、セルのすべてのインスタンスサイズを一度に調整できます。どちらの場合も、デバイスと拡張設定は%iを使用して「ttyS1」ビットを取得できます。

ただし、一部のユニットはテンプレート化できません。たとえば、スライス(cgroupを表す)はuser-<UID>.slice代わりに名前が付けられますuser@<UID>.slice。なぜなら、これらのユニットの名前はファイルシステムパス(ダッシュはスラッシュにマップされるため、「user-123.slice」は「user.slice」の子です)。

すべての個々のユーザースライスを構成できることが望ましいので(たとえば、各スライスにx%のメモリを提供する)、クラスパス名を使用するユニットにも同様のメカニズムが追加されました。上記のgettyの例と同様に、ユニットはuser-1000.slice両側で拡張できます。user-1000.slice.d/ そして user-.slice.d/、後者の通常のディレクトリにあるファイルは%jを使用して "1000"ビットを取得できます。

最後の例は、基本システムのインストールで実際に使用されます。

$ systemctl cat user-1000.slice
# /usr/lib/systemd/system/user-.slice.d/10-defaults.conf
[Unit]
Description=User Slice of UID %j

答え2

一例は、名前からパスを参照するシステムデバイスです。これらの単位では、が/次に置き換えられます-(そして先行は-削除されます)。たとえば、インストールユニットの/home/muru名前はですhome-muru.mount。同様に、次のコマンドを実行すると、別のパスベースのユニット名を表示できますsystemctl list-units

sys-devices-platform-soc-3f980000.usb-usb1-1\x2d1-1\x2d1.5-1\x2d1.5:1.0-host0-target0:0:0-0:0:0:0>
sys-devices-platform-soc-3f980000.usb-usb1-1\x2d1-1\x2d1.5-1\x2d1.5:1.0-host0-target0:0:0-0:0:0:0>
sys-devices-virtual-misc-rfkill.device          loaded active plugged   /sys/devices/virtual/misc
sys-devices-virtual-tty-ttyprintk.device        loaded active plugged   /sys/devices/virtual/tty/
sys-module-configfs.device                      loaded active plugged   /sys/module/configfs
sys-subsystem-net-devices-eth0.device           loaded active plugged   SMSC9512/9514 Fast Ethern
sys-subsystem-net-devices-wlan0.device          loaded active plugged   /sys/subsystem/net/device

多くの場合、パスの最後のコンポーネント(たとえば、で指定された部分%j)がセル内で役に立ちます。実際にその名前を使用する人がいるかどうかはわかりませんが、たとえば、%jまたは同様のディレクトリの設定単位ジェネレータのユーザー名を取得すると便利です。/home/run/user

関連情報