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]で、ExecStartやStandardOutputなどのサービス・タイプのユニットに固有のオプションが含まれています。そのタイプに固有のオプションを提供するユニット・タイプにのみ、このようなセクションがあります。
-
[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 stopやsystemctl restartなどのsystemd操作によってプロセスが正常に停止された場合、適用されません。 このような場合、この構成オプションによってサービスは再起動されません。 -
RemainAfterExit -
すべてのプロセスが終了した場合でもサービスがアクティブであるとみなされるかどうかを構成するブール値です。 デフォルト値は
noです。
[Install]セクションのオプションの説明
次のリストは、サービス・ユニット・ファイルの[Install]セクションで使用可能な、一般的に使用される構成可能オプションの概要を示しています。
-
Alias -
ユニットの名前をスペースで区切ったリスト。
インストール時に、
systemctl enableはこれらの名前からユニット・ファイル名へのシンボリック・リンクを作成します。別名が有効になるのは、ユニットが有効な場合のみです。
-
RequiredBy -
サービスが他のユニットで必要になるように構成します。
たとえば、ユニット・ファイル
var1.serviceに次の構成が追加されているとします。RequiredBy=var2.service var3.servicevar1.serviceが有効な場合、var2.serviceとvar3.serviceの両方にvar1.serviceに対するRequires依存関係が付与されます。 この依存関係は、var1.serviceシステム・ユニット・ファイルを指す各依存サービス(var2.serviceおよびvar3.service)の.requiresフォルダに作成されるシンボリック・リンクによって定義されます。 -
WantedBy -
ファイルを編集しているサービスに対する
wants依存関係を付与するユニットのリストを指定します。たとえば、ユニット・ファイル
var1.serviceに次の構成が追加されているとします。WantedBy=var2.service var3.servicevar1.serviceが有効な場合、var2.serviceとvar3.serviceの両方にvar1.serviceに対するWants依存関係が付与されます。 この依存関係は、var1.serviceのシステム・ユニット・ファイルを指す各依存サービス(var2.serviceおよびvar3.service)の.wantsフォルダに作成されるシンボリック・リンクによって定義されます。 -
Also -
ユニットがインストールまたは削除されたときにインストールまたは削除する追加ユニットを一覧表示します。
-
DefaultInstance -
DefaultInstanceオプションは、テンプレート・ユニット・ファイルにのみ適用されます。テンプレート・ユニット・ファイルを使用すると、1つの構成ファイルから複数のユニットを作成できます。
DefaultInstanceオプションは、明示的にインスタンスを設定せずにテンプレートを有効にした場合、ユニットを有効にするインスタンスを指定します。