システムターゲットを作成するには?

システムターゲットを作成するには?

systemd に関する多数の投稿、Youtube ビデオ、「ドキュメント」を検索した後も、まだ迷っています。

リンク(https://wiki.archlinux.org/index.php/systemd#Create_custom_target)有望に見えますが(私にとっては)少しあいまいです。

質問

選択した.service単位で開始できるように、カスタムsystemdターゲット(foo.targetなど)をどのように生成しますか?

はい

  1. システムはdefault.target("foo.target"へのシンボリックリンク)を起動します。
  2. 「foo.target」は、ベアボーンXサーバーや「gvim」などのGUIプログラムのみを起動します。

理由

Xプログラムをすばやく起動するためのカスタムターゲットを作成したいと思います。不要なすべてのサービスを除外することを嬉しく思います。

よろしくお願いします!

ベストアンサー1

ユニットファイルはsystemdのターゲットと他のすべてを定義するために使用されることを読んでman 5 systemd.unit教えてください。man 5 systemd.target作成方法に関する具体的な文書はありません。ターゲットだからどうすればいいのかわかりにくいですが、サービスを作るのと大きく変わりません。

目標を作る際に必要なことシンボリックリンクtarget.wantssystemdサービスディレクトリからこのディレクトリに移動します。その後、目標を設定/実行できます。あなたの例に応じて、次のように見えます。

/etc/systemd/system/foo.target

これはターゲットのユニットファイルです。 graphic.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——ソフト依存性。対象ではない必要それが始まるのに必要なすべてです。
  • Conflicts- あるデバイスに他のデバイスとの設定が衝突した場合、前者を起動すると後者も停止し、その逆も同様です。
  • After- このサービスの後に始めてください。
  • AllowIsolate- それはすべてあなたとあなたの状況に依存します。詳細はマンページで確認できます。systemd.unit(5)

/etc/systemd/system/foo.target.wants/

このディレクトリでは、ターゲットに対して作成/必要なサービスを接続します。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=ディレクティブに追加してください。

おすすめ記事