【随時更新】Amazonタイムセール情報

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

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

当サイトでは、広告掲載ポリシーに沿って広告を掲載しています。

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

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

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がありました。 本記事...

日ごろのお買い物等にご利用いただけると当ブログ継続の励みになります

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

シェア=ありがたみ
  • URLをコピーしました!
目次