たくさんの投稿、Youtubeビデオ、そしてsystemdに関する「ドキュメント」をたっぷりと検索した後も、私はまだ困っています。
リンク( https://wiki.archlinux.org/index.php/systemd#Create_custom_target )は見込みがあるように見えましたが、(私にとっては)あいまいでした。
特定の.serviceユニットで起動できるように、カスタムsystemdターゲット(IE:foo.target)を作成するにはどうすればよいですか?
私は単に、1つのXプログラムをすばやく起動するためのカスタムターゲットを作成することを考えています。不要なすべてのサービスを除外すると便利です。
前もって感謝します!
_man 5 systemd.unit
_および_man 5 systemd.target
_を読むと、ユニットファイルを使用して、ターゲットやその他のすべてのsystemdを定義していることがわかります。 targetの作成方法に関するドキュメントは特にないため、どのように実行するかを決定することは困難ですが、サービスの作成とそれほど変わりません。
ターゲットを作成するときに、systemdサービスディレクトリから_target.wants
_ディレクトリにsymlinksを作成する必要があります。次に、ターゲットを設定/起動できます。これがあなたの例を与えられたときの見た目です。
これは、ターゲットのユニットファイルです。例としてgraphical.targetを取り上げると、それをベースとして使用して独自のターゲットを作成できます。
_[Unit]
Description=Foobar boot target
Requires=multi-user.target
Wants=foobar.service
Conflicts=rescue.service rescue.target
After=multi-user.target rescue.service rescue.target
AllowIsolate=yes
_
Systemdマンページから取得したオプションについて説明します。
Description
-ターゲットについて説明します。あなたは理解する必要がありますRequires
-ターゲットのハード依存。独自のサービスを開始する前に、基本システムを開始する必要がありますWants
-ソフトな依存関係。ターゲットはrequireこれらを開始しません。Conflicts
-ユニットに別のユニットで競合設定がある場合、前者を開始すると後者が停止し、逆も同様です。After
-これらのサービスの後に起動しますAllowIsolate
-本当にあなたとあなたの環境次第です。詳細はマンページにありますsystemd.unit(5)
これは、ターゲットに対して作成/要求するサービスをリンクするディレクトリです。これは、ユニットファイルの_Wants=
_オプションと同等です。このディレクトリを作成してから、シンボリックリンクを作成します。 _ln -s /usr/lib/systemd/system/bar.service /etc/systemd/system/foo.target.wants/bar.service
_。これにより、システムディレクトリのbar.serviceからfoo.target.wantsディレクトリへのシンボリックリンクが作成されます。
サービスのユニットファイルを作成することは、この回答の範囲外であると思います。その質問は間違いなく文書化されているので、ここでは省略します。ユニットファイルを作成したら、それをtarget.wantsディレクトリにシンボリックリンクするか、_Wants=
_ディレクティブに追加します。