インスタンス化されたシステムサービスを有効にするたびに、同じインスタンス指定子を使用して2つのタイマーを有効にしたいと思います。これは私のユニットファイルです[Eメール保護]良い:
[Unit]
Description=Does something cool
Documentation=man:foo(1)
[Service]
Type=forking
ExecStart=/usr/bin/foo %i
PIDFile=%t/foo/foo.pid
StandardOutput=journal
[Install]
WantedBy=network-online.target
Also=bar1@%i.timer
Also=bar2@%i.timer
実行結果:systemctl enable [email protected]
Failed to enable unit: Invalid argument
[Install]セクションでインスタンス指定子を削除し、それを特定のインスタンス名(下図のように)に変更すると正常に動作します。
...
[email protected]
[email protected]
マニュアルページシステムユニット(5)説明する%私指定子はインストール部分で説明しましたが、何が与えられますか?
The following specifiers are interpreted in the Install section: %n, %N, %p, %i, %U, %u, %m, %H, %b, %v.
答え1
これはsystemdのバグであるように見え、セクションのAlso
ディレクティブで再現されます[Install]
。
ただし、回避策を使用して同じ機能を提供できます。
ファイルがあり、対応する[email protected]
ユニットファイルが必要であるとしましょう。代わりに、このセクションをディレクティブに追加してくださいWantedBy
。.timer
まず、背面を使用してデバイスをアクティブにします。systemctl enable [email protected]
[Install]
WantedBy=network-online.target bar1@%i.timer bar2@%i.timer
上記のコードは、ソケットアクティベーションを介して複数のmpdサービスを開始するために、サービステンプレートと複数のソケットファイルを使用して正しく機能します。