前回、systemdの基本操作を説明した。今回は、Unitの設定ファイルの書き方を説明していこう。

 Unitの設定ファイルは、[Unit]、[Service]、[Install]などのセクションに分かれている。[Unit]セクションには、依存関係や順序関係など、Unitの種類に依存しない項目を記載する。[Service]セクションは、serviceタイプのUnitに固有の設定項目になる。前回触れたように、[Install]セクションには、Unitの自動起動を有効化する際に、依存関係を設定するUnitを指定する。

 Unitの設定ファイルを変更した際は、次のコマンドで設定変更をsystemdに認識させる必要がある。

# systemctl daemon-reload 
このマークで改行

 [Unit]セクションの主なオプションを表3に示す。

表3● [Unit]セクションの主要オプション
オプション説明
DescriptionUnitの説明文
DocumentationドキュメントのURI
Requires/WantsこのUnitと同時に有効化が必要なUnit
AfterこのUnitより先に起動すべきUnit
BeforeこのUnitより後に起動すべきUnit

 「Requires/Wants」「After」「Before」は、前回説明した依存関係と順序関係の設定である。複数のUnitを指定する際は、スペース区切りで指定するか、もしくは、同じオプションを複数回に分けて記載する。依存関係を指定する「Requires」と「Wants」の違いは、次のようになる。「Requires」は、前提のUnitが起動に失敗すると、このUnitの起動を取りやめる。一方、「Wants」は、前提のUnitが起動に失敗しても、このUnitの起動処理はそのまま実施する。

 続いて、serviceタイプのUnitに固有の設定項目となる、[Service]セクションの主なオプションを紹介する。まず、表4は、サービスの起動・停止に関わるオプションである。

表4●サービスの起動・停止に関わる[Service]セクションの主要オプション
オプション説明
ExecStartサービス起動コマンド
ExecReloadサービスリロードコマンド
ExecStopサービス停止コマンド
ExecStartPre
/ExecStartPost
サービス起動前後の追加コマンド(サービスの起動判定には関連しない)
ExecStopPostサービス停止後に実行するコマンド(サービスが異常停止した際にも実行)
Restartプロセスが異常停止した際の再起動の指定
User/Groupプロセスを起動するユーザー/グループ

 「ExecStart」と「ExecStop」で指定したコマンドの実行結果によって、サービス起動/停止の成功/失敗が判定される。サービスのプロセスが異常停止した際に、自動で再起動するかどうかは、「Restart」オプションで指定する。デフォルトは「no」(再起動しない)で、自動で再起動する際は「always」を指定する。