systemdサービス・ユニット・ファイルの変更

systemdサービスの構成を変更するには、.service.target.mountおよび.socket拡張子を持つファイルを/usr/lib/systemd/systemから/etc/systemd/systemにコピーします。

ファイルをコピーしたら、/etc/systemd/systemでバージョンを編集できます。/etc/systemd/systemのファイルは、/usr/lib/systemd/systemのバージョンより優先されます。/usr/lib/systemd/systemのファイルに対応するパッケージを更新しても、/etc/systemd/systemのファイルは上書きされません。

特定のサービスのデフォルトのsystemd構成に戻すには、/etc/systemd/systemでコピーの名前を変更するか削除します。

サービスの構成を変更するもう1つの方法は、ドロップイン・ファイルを作成することです。この方法では、ユニットの特定のパラメータを変更しながら元のユニットを保持できます。

unit_name.dディレクトリが既存のユニットである/etc/systemd/system/unit_name.d/にドロップイン・ファイルを作成し、ドロップイン・ファイルに.confファイル拡張子を付与します。たとえば、/etc/systemd/system/unit_name.d/name_of_drop-in.confです。systemdは、.confファイルを読み取り、設定を元の単位に適用します。

次の項では、システムで編集およびカスタマイズするサービス・ユニット・ファイルの様々な部分について説明します。

サービス・ユニット・ファイルについて

サービスは、対応するサービス・ユニット・ファイルに基づいて実行されます。サービス・ユニット・ファイルには通常次のセクションが含まれ、各セクションには、特定のサービスの実行方法を決定するそれぞれの定義済オプションが含まれています。

[Unit]

サービスに関する情報が含まれています。

[UnitType]:

ファイルのユニット・タイプに固有のオプションが含まれています。たとえば、サービス・ユニット・ファイルでは、このセクションのタイトルは[Service]で、ExecStartStandardOutputなどのサービス・タイプのユニットに固有のオプションが含まれています。

そのタイプに固有のオプションを提供するユニット・タイプにのみ、このようなセクションがあります。

[Install]

特定のユニットのインストール情報が含まれています。このセクションの情報は、systemctl enableおよびsystemctl disableコマンドで使用されます。

サービス・ユニット・ファイルには、サービスに対する次の構成が含まれている場合があります。

[Unit]
Description=A test service used to develop a service unit file template

[Service]
Type=simple
StandardOutput=journal
ExecStart=/usr/lib/systemd/helloworld.sh

[Install]
WantedBy=default.target

「サービス・ユニット・ファイルで構成可能なオプション」では、各セクションで使用可能な一般的に使用される構成済オプションの一部について説明します。完全なリストは、systemd.service(5)およびsystemd.unit(5)の各マニュアル・ページでも入手できます。

サービス・ユニット・ファイルの構成可能なオプション

次の各リストでは、サービス・ユニット・ファイルの個別のセクションについて説明します。

[Unit]セクションのオプションの説明

次のリストは、サービス・ユニット・ファイルの[Unit]セクションで使用可能な、一般的に使用される構成可能オプションの概要を示しています。

Description

サービスに関する情報を提供します。この情報は、ユニットでsystemctl statusコマンドを実行すると表示されます。

Documentation

このユニットまたはその構成のドキュメントを参照するURIのスペース区切りリストが含まれています。

After

オプションに一覧表示されているユニットの起動完了後にのみ実行されるようにユニットを構成します。

次の例では、ファイルvar3.serviceに次のエントリがある場合、これはユニットvar1.serviceおよびvar2.serviceの起動後にのみ開始されます:

 After=var1.service var2.service
Requires

他のユニットに対して要件の依存関係を持つようにユニットを構成します。ユニットがアクティブになっている場合、そのRequiresオプションにリストされているユニットもアクティブになります。

Wants

厳密でないバージョンのRequiresオプション。たとえば、Wantsオプションにリストされているユニットのいずれかが起動に失敗した場合でも、特定のユニットをアクティブ化できます。

[Service]セクションのオプションの説明

次のリストは、サービス・ユニット・ファイルの[Service]セクションで使用可能な、一般的に使用される構成可能オプションの概要を示しています。

Type

サービス・ユニットのプロセス起動タイプを構成します。

デフォルトでは、このパラメータの値はsimpleです。これは、サービスのメイン・プロセスがExecStartパラメータによって起動されることを示します。

通常、サービスのタイプがsimpleの場合、この定義はファイルから省略できます。

StandardOutput
サービスのイベントのログ記録方法を構成します。たとえば、サービス・ユニット・ファイルに次のエントリがあるとします。
StandardOutput=journal

この例では、値journalは、イベントがジャーナルに記録されることを示し、journalctlコマンドを使用して表示できます。

ExecStart

サービスを開始するフル・パスとコマンドを指定します(たとえば、/usr/bin/npm start)。

ExecStop

ExecStartを介して開始されたサービスを停止するために実行するコマンドを指定します。

ExecReload

サービス内の構成のリロードをトリガーするために実行するコマンドを指定します。

Restart

サービス・プロセスが終了したか、停止したか、またはタイムアウトに達したときにサービスを再起動するかどうかを構成します。

ノート:

このオプションは、systemctl stopsystemctl restartなどのsystemd操作によってプロセスが正常に停止された場合、適用されません。このような場合、この構成オプションによってサービスは再起動されません。
RemainAfterExit

すべてのプロセスが終了した場合でもサービスがアクティブであるとみなされるかどうかを構成するブール値です。デフォルト値はnoです。

[Install]セクションのオプションの説明

次のリストは、サービス・ユニット・ファイルの[Install]セクションで使用可能な、一般的に使用される構成可能オプションの概要を示しています。

Alias

ユニットの名前をスペースで区切ったリスト。

インストール時に、systemctl enableはこれらの名前からユニット・ファイル名へのシンボリック・リンクを作成します。

別名が有効になるのは、ユニットが有効な場合のみです。

RequiredBy

サービスが他のユニットで必要になるように構成します。

たとえば、ユニット・ファイルvar1.serviceに次の構成が追加されているとします。

RequiredBy=var2.service var3.service

var1.serviceが有効な場合、var2.servicevar3.serviceの両方にvar1.serviceに対するRequires依存関係が付与されます。この依存関係は、var1.serviceシステム・ユニット・ファイルを指す各依存サービス(var2.serviceおよびvar3.service)の.requiresフォルダに作成されるシンボリック・リンクによって定義されます。

WantedBy

ファイルを編集しているサービスに対するwants依存関係を付与するユニットのリストを指定します。

たとえば、ユニット・ファイルvar1.serviceに次の構成が追加されているとします。

WantedBy=var2.service var3.service

var1.serviceが有効な場合、var2.servicevar3.serviceの両方にvar1.serviceに対するWants依存関係が付与されます。この依存関係は、var1.serviceのシステム・ユニット・ファイルを指す各依存サービス(var2.serviceおよびvar3.service)の.wantsフォルダに作成されるシンボリック・リンクによって定義されます。

Also

ユニットがインストールまたは削除されたときにインストールまたは削除する追加ユニットを一覧表示します。

DefaultInstance

DefaultInstanceオプションは、テンプレート・ユニット・ファイルにのみ適用されます。

テンプレート・ユニット・ファイルを使用すると、1つの構成ファイルから複数のユニットを作成できます。DefaultInstanceオプションは、明示的にインスタンスを設定せずにテンプレートを有効にした場合、ユニットを有効にするインスタンスを指定します。