systemd のターゲット、サービス、ソケットとは何ですか?

systemd のターゲット、サービス、ソケットとは何ですか?

これらはすべてユニット ファイルであることはわかっていますが、それらの特別な意味が理解できません。ターゲットはデーモンに似ており、ソケットはソケット (IP + ポート) と同じですが、inode 番号も付いていると思います。誰か簡単な言葉で説明してもらえませんか?

答え1

サービスユニット:

A unit configuration file whose name ends in .service encodes
information about a process controlled and supervised by systemd.

systemd.サービス(5)

Systemd サービス ユニットは、プログラムとデーモンを実際に実行して追跡するユニットであり、依存関係はサービスが正しい順序で開始されることを確認するために使用されます。これらは最も一般的に使用されるタイプのユニットです。

ソケットユニット:

A unit configuration file whose name ends in ".socket" encodes
information about an IPC or network socket or a file system FIFO
controlled and supervised by systemd, for socket-based activation.

systemd.socket(5)

一方、ソケット ユニットは、実際にはデーモンを独自に起動しません。代わりに、ソケット ユニットはただそこに待機して IP アドレスとポート、または UNIX ドメイン ソケットをリッスンし、何かが接続すると、ソケットの対象となるデーモンが起動され、接続がデーモンに渡されます。

これは、大量のリソースを消費するがめったに使用されない大きなデーモンが常に実行されてリソースを消費するのではなく、必要なときにのみ起動されるようにするのに役立ちます。

対象ユニット:

A unit configuration file whose name ends in ".target" encodes
information about a target unit of systemd, which is used for grouping
units and as well-known synchronization points during start-up.

systemd.target(5)

ターゲットは、ユニットをグループ化して順序付けるために使用されます。ターゲットは、異なるターゲットで異なるサービス、ソケット、およびその他のユニットが開始されるという点で、ランレベルとほぼ同等です。ランレベルとは異なり、ターゲットはより自由な形式であり、ユニットを順序付けるための独自のターゲットを簡単に作成できます。また、ターゲット同士は依存関係を持ちます。

たとえば、multi-user.targetほとんどのデーモンは の下にグループ化されており、これをbasic.targetアクティブ化する必要があります。つまり、 の下にグループ化されているすべてのサービスはbasic.target内のサービスよりも先に開始されますmulti-user.target

答え2

systemdのドキュメントは、比較的新しいプロジェクトとしては素晴らしいものです。まずはターゲット、からman systemd.target

ターゲット ユニットは、ユニットによって提供される一般的な機能以外には、追加の機能を提供しません。ターゲット ユニットは、依存関係を介してユニットをグループ化するため (ブート ターゲットとして便利)、およびユニット間の依存関係で使用される同期ポイントの標準化された名前を確立するためにのみ存在します。とりわけ、ターゲット ユニットは、従来の SysV init システムにおける SysV ランレベルのより柔軟な代替品です。

これらの「ユニット グループ」は、basic.targetシステムの起動から、dbus、getty、マウント ポイント、スワップ、タイマーまで、さまざまな機能をカバーします。 で完全なリストを確認できますman systemd.special

サービスファイルは、systemd によって制御されるプロセスを実行するための基本単位です。ここでも、次のようになりますman systemd.service

名前が .service で終わるユニット構成ファイルは、systemd によって制御および監視されるプロセスに関する情報をエンコードします。

これらは、起動、停止、再起動、再ロードできるデーモンを構成します。

ついに、ソケット、からman systemd.socket

名前が「.socket」で終わるユニット構成ファイルは、ソケットベースのアクティベーションのために、systemd によって制御および監視される IPC またはネットワーク ソケット、またはファイル システム FIFO に関する情報をエンコードします。

これらは、ファイル システムまたはインターネット上のソケット、およびトランスポートとしての従来の FIFO をカバーします。各ソケット ユニットには対応するサービス ユニットがあり、ソケットまたは FIFO に最初の接続が着信すると開始されます。

これらのページに加えてman、レナートのブログ投稿シリーズも読む価値があります。管理者向け systemdでは、systemd のアーキテクチャと実装について詳しく説明します (現在、このシリーズには 20 件の投稿があります)。

関連情報