前回、systemdの基本操作を説明した。今回は、Unitの設定ファイルの書き方を説明していこう。
Unitの設定ファイルは、[Unit]、[Service]、[Install]などのセクションに分かれている。[Unit]セクションには、依存関係や順序関係など、Unitの種類に依存しない項目を記載する。[Service]セクションは、serviceタイプのUnitに固有の設定項目になる。前回触れたように、[Install]セクションには、Unitの自動起動を有効化する際に、依存関係を設定するUnitを指定する。
Unitの設定ファイルを変更した際は、次のコマンドで設定変更をsystemdに認識させる必要がある。
# systemctl daemon-reload
[Unit]セクションの主なオプションを表3に示す。
オプション | 説明 |
---|---|
Description | Unitの説明文 |
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は、サービスの起動・停止に関わるオプションである。
オプション | 説明 |
---|---|
ExecStart | サービス起動コマンド |
ExecReload | サービスリロードコマンド |
ExecStop | サービス停止コマンド |
ExecStartPre /ExecStartPost | サービス起動前後の追加コマンド(サービスの起動判定には関連しない) |
ExecStopPost | サービス停止後に実行するコマンド(サービスが異常停止した際にも実行) |
Restart | プロセスが異常停止した際の再起動の指定 |
User/Group | プロセスを起動するユーザー/グループ |
「ExecStart」と「ExecStop」で指定したコマンドの実行結果によって、サービス起動/停止の成功/失敗が判定される。サービスのプロセスが異常停止した際に、自動で再起動するかどうかは、「Restart」オプションで指定する。デフォルトは「no」(再起動しない)で、自動で再起動する際は「always」を指定する。