【Linux】Linuxシステムサービスサービスsystemdの詳細説明

序文:

サービスとは、メモリ上に常駐し、ネットワーク機能やサービス機能を提供するプログラムのことで、英語ではサービスと呼ばれます。

1.systemd設定ディレクトリ

CentOS 7.x 以降、Red Hat シリーズはinitサービスを管理するためのスクリプトを起動する方法を放棄し、起動サービス管理メカニズムである systemd に切り替えました。このメカニズムの利点は次のとおりです。

  • サービスの並列処理により起動プロセスが高速化され、systemd はすべてのサービスを同時に開始できます。
  • サービスの依存関係のセルフチェック。
  • サービスを機能に応じて分類し、複数のサービスを 1 つのグループにグループ化します。

systemdでは過去の実行スクリプトをまとめてサービス単位(ユニット)と呼びます。各サービスユニットを機能別に区別すると、種類(タイプ)に分類される。

基本的なタイプには次のものがあります (通常は異なる接尾辞によって区別されます)。

  • システムサービス
  • データの監視と交換のためのソケット ファイル サービス (ソケット)
  • システム状態を保存するスナップショットのタイプ
  • 実行レベルの分類と同様に異なる動作環境(ターゲット)を提供

systemd 構成ディレクトリには 3 つのタイプがあります。

  • /usr/lib/systemd/system/: 各サービスの最も重要な起動スクリプト設定
  • /run/systemd/system/: システムの実行中に生成されるサービス スクリプト。これらのスクリプトは、
  • /usr/lib/systemd/system/ 高
  • /etc/systemd/system/: ホストシステムの要件に従って管理者が作成した実行スクリプトは、/run/systemd/system/ よりも実行優先度が高くなります。
  • /etc/systemd/システム/

開始する必要があるサービスは、このディレクトリに保存されます。このディレクトリには、/usr/lib/systemd/system/ ディレクトリにリンクされている多数のリンク ファイルがあります。このディレクトリ内のファイルは、サービス スクリプトです。実際に systemd によって開始されたファイル。
ここに画像の説明を挿入

2. systemdサービスユニット(ユニット)の分類

前述したように、サービスユニットは機能に応じていくつかの種類に分かれており、サービススクリプトファイルの拡張子に応じて以下の種類に分けることができます。
ここに画像の説明を挿入
その中で、.service のシステム サービス タイプが最も一般的です。

3. systemctl を使用してサービスを管理する

systemd がサービスを開始するメカニズムは、主にsystemctlコマンドによって処理されます。

[root@study ~]# systemctl [command] [unit]
command 主要有:
start :立刻启动后面接的 unit
stop :立刻关闭后面接的 unit
restart :立刻关闭后启动后面接的 unit,亦即执行 stop 再 start 的意思
reload :不关闭后面接的 unit 的情况下,重新载入配置文件,让设置生效
enable :设置下次开机时,后面接的 unit 会被启动
disable :设置下次开机时,后面接的 unit 不会被启动
status :目前后面接的这个 unit 的状态,会列出有没有正在执行、开机默认执行否、登录等信息等!
is-active :目前有没有正在运行中
is-enable :开机时有没有默认要启用这个 unit

3.1 現在のサービスステータスを表示する

コマンドを使用してsystemctl status、コース サービスのステータスを表示します。ステータスの意味は次のとおりです。

  • Loaded: この行は、サービスが起動時に開始されるかどうかを示します。有効は起動時に開始されることを意味し、無効は開始されないことを意味し、ベンダー プリセットは初めてインストールされたときのデフォルト値を意味します。
  • Active: このサービスユニットの現在のステータスは実行中 (running) または実行されていない (dead) です。

Active には、実行中と停止状態に加えて、他にもいくつかの基本的な状態があります。

  • アクティブ (実行中): 1 つ以上のプログラムがシステムで実行されていることを意味します。
  • active (exited): サービスは 1 回だけ実行されて正常に終了し、現在システム内でプログラムが実行されていません。
  • active (待機中): 実行中ですが、処理を続行するために他のイベントを待機しています。
  • inactive: サービスは現在実行されていません。

Loaded のステータスも次のようになります。

  • 有効: このサービスは起動時に実行されます。
  • 無効: このデーモンは起動時に実行されません。
  • static: このデーモンは単独では起動できません (有効化できません) が、他のデーモンによって有効化される可能性があります。
  • 目覚めるためのサービス
  • マスク: とにかく、このデーモンを開始できません。強制ログアウト(削除ではない)されているためです。
    ここに画像の説明を挿入

3.2 システム内の既存のサービスを表示する

list-unitsコマンドを使用して、現在開始されているサービスとlist-unit-filesインストールされているサービスを表示します。コマンドは次のとおりです。

[szp@study ~]# systemctl [command] [--type=TYPE] [--all]
command:
list-units :依据 unit 列出目前有启动的 unit。若加上 --all 才会列出没启动的。
list-unit-files :依据 /usr/lib/systemd/system/ 内的文件,将所有文件列表说明。
--type=TYPE:就是之前提到的 unit type,主要有 service, socket, target 等

ここに画像の説明を挿入
パラメーターのない systemctl コマンドは systemctl list-units と同等であり、出力される結果の列の意味は次のとおりです。

  • UNIT: 各ユニットのカテゴリを含むプロジェクトの名前
  • LOAD : 起動時にロードされるかどうか、デフォルトの systemctl はロードされた項目のみを表示します
  • ACTIVE: 現在の状態は後続の SUB と一致する必要があります。systemctl status で観察するとアクティブな項目です
  • DESCRIPTION : 詳細な説明

インストールされているサービスを一覧表示するために使用しますsystemctl list-unit-files
ここに画像の説明を挿入
次のコマンド systemctl list-units –type=service –all を使用して、サービス カテゴリのサービスをフィルタリングします。
ここに画像の説明を挿入

3.3 サービス間の依存関係を表示する

systemctl list-dependencies [unit] [--reverse]
--reverse :反向追踪谁使用这个服务单元

コマンドの実行結果を下図に示します。
ここに画像の説明を挿入

4. サービスタイプのsystemctl設定ファイル

systemd のほとんどの設定ファイルは /usr/lib/systemd/system/ ディレクトリに配置されます。このディレクトリにはソフトウェアのデフォルト設定が保存されており、変更することはお勧めできません。変更した設定ファイルは /etc/systemd/system/ ディレクトリに配置する必要があります。

vsftpd.service を例に挙げます。変更する場合は、次のディレクトリで実行できます。

  • /usr/lib/systemd/system/vsftpd.service: 公式のデフォルト設定ファイル。
  • /etc/systemd/system/vsftpd.service.d/custom.conf: /etc/systemd/system 配下に設定ファイルと同じファイル名で拡張子 .d を付けたディレクトリを作成します。次に、このディレクトリに構成ファイルを作成します。構成ファイルの接尾辞は .conf であることが望ましいです。このディレクトリ内のファイルは /usr/lib/systemd/system/vsftpd.service に添付されます。
  • /etc/systemd/system/vsftpd.service.wants/*: このディレクトリ内のファイルはリンク ファイルであり、依存するサービスのリンクを設定します。これは、vsftpd.service を開始した後、このディレクトリで推奨されるサービスを開始する方が良いことを意味します。
  • /etc/systemd/system/vsftpd.service.requires/*: このディレクトリ内のファイルはリンク ファイルであり、依存するサービスのリンクを設定します。これは、vsftpd.service を開始する前にどのサービスを開始する必要があるかを意味します。
    ここに画像の説明を挿入

設定ファイルの書き込み形式

設定ファイルが配置されるディレクトリがわかったら、設定ファイル自体の形式定義を見てみましょう。

sshd.service を例として、次のようにファイルの内容を確認します。ファイルは角括弧で示された項目で構成されています。通常、設定は反復可能であり、後の設定が以前の設定に置き換わります。空白行、または # または ; で始まる行はすべてコメントを表します。パラメータの設定に「はい/いいえ」項目 (ブール値、ブール値) が必要な場合、オンの場合は 1、はい、true、on を使用し、オフの場合は 0、no、false、off を使用できます。
ここに画像の説明を挿入

  • [ユニット]: ユニット自体の説明と、その後にユニットを起動するサービスなどの設定値を含む、他の依存デーモンとの設定。
  • [サービス]、[ソケット]、[タイマー]、[マウント]、[パス]…: ユニットの種類が異なると、対応する設定項目を使用する必要があります。現在は例としてsshd.serviceを使用しているので、[サービス]を使用して設定します。主に標準サービスの起動スクリプト、環境設定ファイル名、再起動方法などです。
  • [インストール]: この項目は、本機をどのターゲットにインストールするかを示します。

各項目の設定内容を以下に紹介します。

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

参考

【基本エントリー!】Linuxシステムサービス詳細

おすすめ

転載: blog.csdn.net/m0_45406092/article/details/130588316
おすすめ