前回、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」を指定する。

この先は会員の登録が必要です。有料会員(月額プラン)は申し込み初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら