サービス再起動すると他のサービスも再起動する(Systemd,Requires)

当サイトには広告を含みます。

当サイトでは、広告掲載ポリシーに沿って広告を掲載しています。
※広告でなく、単に商品やサービスを自主的に紹介しているだけという場合もあります。

"オススメ" として紹介している商品やサービスは、個人的にそう思えたものだけです。

共感、興味をもっていただけるものがあればご利用ください。

1,000P獲得できるお得なAmazonプライム入会

Systemdで依存関係を定義してあると、サービスを再起動した際、他のサービスも再起動します(当たり前ですが)。

本記事は、SystemdのRequiresディレクティブについて整理しておきたい点をまとめたものです。対象は主にRHEL7、CentOS7以降です。

なお、Systemdの基本的なサービス管理については、こちらの記事にまとめてあります。

本記事の目的

  • SytemdのRequiresディレクティブについて把握する。
  • Requires以外にWants,BindsToディレクティブについて把握する。
目次

基本

サービス再起動すると他のサービスも再起動する動作

サービスA(例えばアプリケーション)とサービスB(例えばDB)があり、サービスAのユニットファイルに、Requires=(サービスB)が設定されているとします。

[サービスA] →(依存)→ [サービスB]
ということです。

このときの基本的な動作について記載します。

  1. サービスAの起動
    # systemctl start (サービスA) →サービスBも起動
    サービスAを起動すると、サービスBも起動されます。
    ※これがRequiresディレクティブの主な役割

  2. サービスBの再起動
    # systemctl restart (サービスB) →サービスAも再起動
    サービスBを再起動すると、サービスAも再起動されます。

  3. サービスBの停止
    # systemctl stop (サービスB) →サービスAも停止
    サービスBを停止すると、サービスAも停止されます。
    ※ただし、その後サービスBだけを起動しても、サービスAは起動しないので注意

  4. systemdを経由しないサービスBの停止
    →サービスAは停止しません。
    systemctlコマンドを使用せずにサービスBが停止した場合に該当します。停止の理由は様々で、サービスBの仕様動作、不具合、関連デバイスの取り外し等が挙げられます。

Afterディレクティブとの関連性

サービスAのユニットファイルに、After=(サービスB)が記載されていると、前述の”1. サービスAの起動”や”2. サービスBの再起動”の際、サービスBの起動が完了してからサービスAの起動を開始します。
記載されていない場合、同時に起動開始されます。
例えば、サービス起動時にDB接続できないと起動失敗するアプリケーションの場合、Afterディレクティブの設定が必要でしょう。

詳細

関連ディレクティブ(Wants、BindsTo)

  • 依存関係の強さは弱いものから順に、Wants < Requires < BindsTo です。

  • 前述の”1. サービスAの起動”の動作のみでよければ、Requiresの代わりにWantsディレクティブを使用すべきです。

  • 前述の”4. systemdを経由しないサービスBの停止 “の際にもサービスAを停止させたい場合、Requiresの代わりにBindsToディレクティブを使用すべきです。
    BindsToで指定したユニットがactiveでない限り、自身のユニットはactiveにならないという設定です。

まとめ

本記事は、SystemdのRequiresディレクティブについて整理しておきたい点をまとめてみました。

参考

関連URL等

関連記事

あわせて読みたい
Systemdによるサービス管理ノウハウ (基本) Systemdは、RHEL7、CentOS7以降における基本的なサービス管理機能 (等を含むシステム管理デーモンやツールの一式) です。従来はUpstart、SysVinitがありました。 本記事...
あわせて読みたい
Systemdのネットワーク関連ユニット (After=network.targetあたり) Systemdのユニットファイルの中にAfter=network.targetという記述をよく見かけますが、ちょっとややこしい仕様です。 本記事は、Systemdのそのあたりのネットワーク関連...
あわせて読みたい
サービス再起動すると他のサービスも再起動する(Systemd,Requires) Systemdで依存関係を定義してあると、サービスを再起動した際、他のサービスも再起動します(当たり前ですが)。 本記事は、SystemdのRequiresディレクティブについて整理...
あわせて読みたい
Systemdのユニットファイルのカスタマイズ Systemdは、RHEL7、CentOS7以降における基本的なサービス管理機能 (等を含むシステム管理デーモンやツールの一式) です。従来はUpstart、SysVinitがありました。 本記事...
記事作成、サイト管理
プロフ画像 (暫定版)

happynap
(はっぴぃなっぷ)

3人家族で暮らし
ITっぽい仕事をしつつ
ポイ活、投資を趣味的に
スキマ時間に、ゆるく全力でブログ
のんびり昼寝したい

お得情報

出張先、旅行先のホテル予約はお早めに

よろしければシェアいただけると
目次