インストール時にすべての場所にシンボリックリンクが生成されるように、複数のターゲット(または複数のインストール手順がある)に必要なサービスを作成する方法はありますか?
私の例は次のシステムファイルです
[Unit]
Description=Run script to fix-audio mappings
[Service]
Type=forking
ExecStart=/bin/bash -c '/usr/local/bin/fix-audio &'
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
それがすることは、私のコンピュータのオーディオマッピングを変更するスクリプトを実行することです(それがなければ、サウンドはサブウーファーからしか出ないのでかなり役に立ちません)。残念ながら、マッピングはスリープ/一時停止/休止状態の後にリセットされるように見えるため、スリープモードから復帰したときにもこのスクリプトを起動する必要があります。
言うことWantedBy=multi-user.target,sleep.target
や似たようなものがありますか?
これに関するドキュメントが見つからないようです。それとも必要なことを達成するためのより良い方法はありますか?
答え1
はい、あります。関連部分を引用してください。system.unitのマニュアルページ:
WantedBy=, RequiredBy=
このオプションは、複数回使用することも、スペースで区切られた単位名のリストを提供することもできます。デバイスがインストールされると、リストされている各デバイスの.wants/または.requires/ディレクトリにシンボリックリンクが作成されます。システム制御の有効化。これはWants=
、型の依存関係を追加したり、リストされているRequires=
単位から現在の単位に追加したりする効果があります。主な結果は、リストされたデバイスが起動すると現在のデバイスが起動することです。Wants=
詳細については、[単位]セクションのおよび説明を参照してください。Requires=
WantedBy=foo.serviceサービスでは
bar.service
主に次のとおりです。 エイリアス=foo.service.wants/bar.service同じファイルに。テンプレート単位の場合、システム制御の有効化インスタンス名で呼び出す必要があり、インスタンスはリストされているデバイスのリストに追加されます.wants/
。.requires/
例えばWantedBy=getty.targetサービスを提供すると、次のような結果が[email protected]
発生します。システム制御の有効化[Eメール保護] リンクを作成します。getty.target.wants/[email protected]
[email protected]
ただし、複数のターゲットに対してこのコマンドを実行するには、必要に応じて、またはディレクティブを介して順序(終了または一時停止などBefore=
)After=
を調整する必要があります(この内容はマニュアルページにも記載されています)。